大家好我有问题。
我制作了一个用户提交详细信息的脚本。详细信息保存到数据库 并且在保存后调用exec。调用的后台scipt是一个php 我通过exec用wget:
调用它的脚本session_write_close();
@exec('wget -q -o /dev/null -a /dev/null -O /home/linux/test.txt http://127.0.0.1/admin/install.php?s=' . session_id() . ' > /dev/null 2>&1 &');
脚本查询数据库并使用curl将一些参数发布到外部URL并等待响应。
我无法在网络服务器上打开任何其他php页面(状态栏显示:等待127.0.0.1),直到上述脚本的脚本执行结束。我想要的是在我的网站上做其他事情时在后台运行。
Apache / 2.2.9(Debian)mod_fastcgi / 2.4.6 PHP / 5.2.6-1 + lenny9与Suhosin-Patch Server在127.0.0.1 Debian Linux发行版。 服务器API CGI / FastCGI
答案 0 :(得分:1)
http://pl2.php.net/manual/en/function.session-write-close.php
我假设你希望服务器脚本等待睡眠()定时间隔,以便AJAX事件触发服务器响应/轮询。在每次sleep()迭代之前使用session_write_close()使其工作。我使用这种模式进行了简单的在线聊天,它起到了魅力作用。
关键是要防止接收器AJAX脚本不断轮询服务器以获取更新以获得快速响应。相反,它会请求睡眠的脚本,并且不会发送任何响应,直到合理的超时或服务器端发生事件。
答案 1 :(得分:0)
如果您使用的是基于文件的会话,他们会锁定页面,直到它们在脚本结束时关闭或明确地通过session_write_close()
。
如果没有,请查找锁定资源的其他内容。
答案 2 :(得分:0)
嗨,谢谢你的链接。阅读后我意识到我需要在使用数据后调用session_write_close(),因为所有页面都是会话处理的(因为我无法打开任何因为php等待会话在后台执行脚本后关闭。< / p>