【发布时间】:2015-06-25 02:19:50
【问题描述】:
大家好,我正在跟进我的问题 Acquire_lock() not working. Bot still sending requests quickly. PHP + AJAX,我无法得到答案。
我已经简化了所有内容并拥有三个文件
- abc.txt
- file1.php
- file2.php
都在同一个目录下,两个php文件的内容都是一样的:
<?php
$x = fopen("/var/www/abc.txt", "w");
if (flock($x, LOCK_EX|LOCK_NB)) {
print "No problems, I got the lock, now I'm going to sit on it.";
while (true)
sleep(5);
} else {
print "Didn't quite get the lock. Quitting now. Good night.";
}
fclose($x);
?>
然而,当我加载其中任何一个时,我收到第二条打印消息:“没有完全拿到锁。现在退出。晚安。”。
有人对这个问题或前一个问题有任何想法吗?从字面上看,我的智慧就这样结束了。
一如既往的感谢。
【问题讨论】:
-
我看不出问题出在哪里,除了你的代码在锁定后进入无限循环(我假设你故意让它测试锁?)我在我的本地服务器上测试了这个并且file1.php 不断循环,而 file2.php 立即显示第二条消息。请求的行为到底是什么?
-
@Tarek 我只是想弄清楚锁定是如何工作的。我最终想要的是,如果您运行第一个脚本,然后运行第二个脚本,第二个脚本将等到第一个脚本完成。第一个脚本完成后,第二个脚本将获取锁并完成执行..
标签: php mysql ajax locking bots