阅读一些关于锁定 PHP 的文章。
它们都主要指向http://php.net/manual/en/function.flock.php。
本页讨论在硬盘上打开文件!!
真的是这样吗?我的意思是,这使得锁定非常昂贵 - 这意味着每次我想锁定我都必须访问硬盘)=
可以再用一个令人愉快的消息来安慰我吗?
编辑:
由于我在这里得到了一些回复,我想问这个;
我的脚本只能由一个线程运行,还是由多个线程运行?因为如果它是一个,那么我显然不需要互斥锁。有简洁的答案吗?
我到底想做什么
由 ircmaxell 询问。
这是故事:
我有两个 ftp 服务器。我希望能够在我的网站上显示有多少在线用户在线。
所以,我认为这些 ftp 服务器会将它们的统计信息“发布”到某个 PHP 脚本页面。假设这个页面的 URL 是“ http://mydomain.com/update.php ”。
在网站的主页(“ http://mydomain.com/index.php ”)上,我将显示累积统计信息(在线用户)。
就是这样。
我的问题是我不确定,当一个 ftp 服务器更新他的统计数据而另一个也这样做时,信息是否会混淆。
就像多线程时一样;两个线程同时增加一些“int”变量。除非您在它们之间同步,否则它不会按预期发生。
那么,我会有问题吗?是的,不,也许?
可能的解决方案
整天苦苦思索,我在这里有个想法,希望你给出你的意见。
如前所述,这些 ftp 服务器将每 60 秒发布一次他们的统计信息。
我正在考虑拥有这个文件“stats.php”。
它将包含在 ftp 服务器转到的更新脚本(“update.php”)和访问者看到有多少用户在线的“index.php”页面中。
现在,当 ftp 服务器更新时,“update.php”处的脚本将使用新的累积统计信息修改“stats.php”。
首先它将读取“stats.php”中包含的统计信息,然后累积,然后重写该文件。
如果我没记错的话,PHP 会检测到文件(“stats.php”)已更改并加载新文件。正确的?