对于同时负载较高且我需要处理文件 I/O 而不会太卡在文件锁上的 LAMP 服务器,您推荐的最佳做法是什么?
我的意思是,假设我想要一个包含大量姓名和电子邮件地址的 SUBSCRIBERS.CSV 文件。但我希望人们能够填写表格取消订阅。如果给定电子邮件地址存在匹配行,取消订阅操作将滚动浏览该文件以删除匹配行。这在 PHP 中似乎是一项简单的任务,但是当您有大约 10 个人试图同时取消订阅并添加 10 个新订阅者时会发生什么?这就是我认为 PHP 可能会遇到麻烦并且可能由于文件锁定而产生错误的地方,除非 Linux 或 PHP 比我想象的更强大。
请注意,我的客户需要 CSV 文件,而不是数据库表。在数据库表中,这不是问题,但作为文件 I/O,我可能会遇到潜在问题,对吧?
(顺便说一句,为了防止身份盗用,我使用了一个 .htaccess 技巧,这样人们就无法通过猜测其名称从 Web 下载 CSV——它只能通过我的 PHP 脚本或 FTP 访问。)
最佳答案
如果要求客户端与 CSV 文件进行交互,则无需实际使用 CSV 文件作为数据存储。相反,使用数据库,在数据库中完成所有工作,然后让 PHP 按需生成 CSV 文件。
因此,如果客户端需要访问 http://example.com/SUBSCRIBERS.CSV , 只需让 PHP 处理 SUBSCRIBERS.CSV 并使用类似的东西:
header("Content-type: text/csv");
$data = get_subscriber_data();
foreach ($data as $row) {
// $row is an array of columns
print implode(',', $row);
}
关于php - 处理高负载文件 I/O 的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4536249/