4

我正在使用 PHPfputcsv在我们正在制作的应用程序中记录投票。我的代码的保存部分大致类似于:

$handle = fopen('votes.csv', 'a');
fputcsv($handle, $data);
fclose($handle);

这在测试中完美无缺。但是,我有一个小问题。在生产中部署时,许多用户可能会同时向此脚本发出请求。我很好奇 PHP 将如何处理这个问题。

我是否可能会遇到问题并因此而失去选票?如果是这样,我能做些什么来防止它?解决方案是否比简单地使用数据库更复杂?最后,我该如何测试这种情况,同时会发出很多请求?是否已经存在测试这类东西的东西?

4

1 回答 1

4

写入文件可能会导致并发用户出现问题。如果您改为插入数据库,则可以让数据库本身处理队列。如果您的连接用完了,它很容易被跟踪,并且您可以随时查看数据库上的负载。

数据库中的插入将比附加到文件中的资源少。话虽如此,您都需要相当大的负载才能生效 - 但是对于数据库,您可以构建查询队列来减轻很大一部分并发压力。

当您向数据库发送请求时,它实际上会进入队列进行处理。只有在您的 PHP 代码超时时才会执行它(基本上,PHP 被告知放弃等待数据库响应 - 您可以通过 PHP 和 Apache 设置来控制它)所以您拥有一个很棒的内置缓冲。

于 2012-08-02T14:45:52.183 回答