【发布时间】:2010-12-27 02:00:05
【问题描述】:
对于同时负载较高的 LAMP 服务器,我需要处理文件 I/O 而不会被文件锁挂得太久,您推荐的最佳做法是什么?
我的意思是,假设我想要一个 SUBSCRIBERS.CSV 文件,其中包含一堆姓名和电子邮件地址。但我希望人们能够填写表格取消订阅。如果给定电子邮件地址存在匹配行,则取消订阅操作将滚动浏览该文件以删除匹配行。这在 PHP 中似乎是一项简单的任务,但是当您有 10 个人试图同时取消订阅并添加 10 个新订阅者时会发生什么?这就是我认为 PHP 可能会遇到问题并且可能由于文件锁定而产生错误的地方,除非 Linux 或 PHP 比我想象的更强大。
请注意,我的客户需要 CSV 文件,而不是数据库表。在数据库表中,这不是问题,但作为文件 I/O,我可能会遇到潜在问题,对吧?
(顺便说一句,为了防止身份盗用,我使用了一个 .htaccess 技巧,这样人们就无法通过猜测其名称通过网络下载 CSV——它只能通过我的 PHP 脚本或 FTP 访问。)
【问题讨论】:
-
客户有没有具体描述过为什么应该是csv?为什么不在数据库中存储和处理所有数据,有时只是将数据导出到 csv?
-
单个文件处理您的用户信息不是明智的选择。这就是数据库的用途。对你的客户大喊大叫。
-
我同意,@Evan 和@zerkms。我会看看我能做什么。
-
为了防止身份被盗,您将数据存储在无法通过网络访问的地方。它要么在 webroot 之外的文件中,要么在数据库中。用“.htaccess 技巧”保护它太脆弱了。很抱歉,但总体上是不好的方法。
标签: php multithreading file-io writing simultaneous