我有一个fwrite函数来写入延迟插入到数据库的日志。
我们的访问率为每小时20,000次。
所以每个fwrite为0.18s。
我的问题是,当有2个或3个访问者同时进入时,PHP是否可能会错过几个日志?
如果是的话,我该怎么做这个并发?
我的代码只是正常的Fopen fwrite fclose。
答案 0 :(得分:6)
更不用说每次写入0.18s可能比插入DBM要贵得多(对我而言,MySQL通常会在0.01秒内返回写入,具体取决于表格,MongoDB可能会更快)。
答案 1 :(得分:1)
你是如何解雇写作的?如果每个请求(每次访问1次)都有一个相关的fwrite,那么你就不会错过任何请求。当你的网络服务器排队/处理请求(峰值流量)时,它们可能变慢(呃),但PHP是请求驱动的,所以对于每个页面加载,你都会执行fwrite。
我说你不会错过任何因为,除非你做一些非阻塞I / O,你的脚本将阻止fwrite调用。换句话说,fwrite将执行。
在使用PHP编写的请求驱动的应用程序上获取任何类型的并发性时,您将无法做任何非常时髦的事情。