我正在使用基于 cURL 的 php 应用程序向另一个执行异步请求的网络服务器发出请求。所以我正在做的是创建名称为 .req 的文件,其中包含我在返回时需要的信息以及请求中的标识。请求是使用 HTTP-XML-POST 完成的。该文件是使用:-
file_get_contents(reqs/<databaseid>.req, FILE_APPEND);
发生的情况是,当请求批量生成时(每秒大约 1500),响应开始从网络服务器返回。响应被另一个脚本捕获,该脚本从响应中接收并基于它打开请求文件:-
$aResponse = file(reqs/<databaseid>.req);
现在发生的情况是,在大约 15% 的请求中,file() 请求失败并在 apache 日志中生成如下日志条目:-
file(reqs/<databaseid>.req): failed to open stream: No such file or directory in <scriptname> on line <xyz>
已使用稍后运行的清洁脚本验证该文件确实存在。
有什么想法吗?!!!
最佳答案
有一些函数可以处理同时文件访问,例如 flock()但简单地使用数据库通常更容易。任何像样的 DBMS 都已经为您解决了。
关于PHP异步多文件读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6494857/