Vol*_*ike 3 php file-io multithreading writing simultaneous
对于具有高同时负载的LAMP服务器,您建议的最佳做法是什么?我需要处理文件I/O而不必过于依赖文件锁?
我的意思是,假设我想要一个SUBSCRIBERS.CSV文件,其中包含一堆名称和电子邮件地址.但我希望人们能够填写表格以取消订阅.如果存在给定的电子邮件地址,取消订阅操作将滚动该文件以删除匹配的行.这似乎是PHP中的一个简单任务,但当你有10个人试图一次取消订阅,并添加10个新订阅者时会发生什么?这就是我认为PHP可能遇到麻烦的地方,并且由于文件锁定可能会产生错误,除非Linux或PHP比我想象的更强大.
请注意我的客户端需要CSV文件,而不是数据库表.在数据库表中,这不会有问题,但作为文件I/O,我可能会遇到潜在的问题,对吧?
(顺便说一句,为了防止身份盗用,我使用.htaccess技巧,以便无法通过猜测其名称在网上下载CSV - 它必须只能通过我的PHP脚本或FTP访问.)
小智 8
如果要求客户端与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);
}
Run Code Online (Sandbox Code Playgroud)