在为某人修复网站时,我遇到了以下问题:
为了处理某些数据,它会调用exec("/usr/bin/php /path/to/file.php input.dat")
,而被调用的file.php
包含include("config.php")
,而session_start()
则包含对flock("/tmp/sess_XXXXXX")
的调用
发生的问题是等待exec
的死锁。父脚本会锁定会话文件,然后exec
'ed脚本会尝试继续同一个会话,再次锁定该文件,但会等待它死锁。
我尝试在session_save_path("/tmp/alt_session");
session_id("NOTHING");
'ed脚本的最开头添加以下内容,但无济于事:
exec("php ...")
很明显,从php脚本中调用exec
会有一些明显的荒谬,但这是另一天的争论,而不是我可以在这里改变的东西。此外,虽然我可以随意更改在config.php
下运行的文件,但更改{{1}}会产生一些其他令我头疼的问题。
还有其他选择,还是我错过了重要的内容?
答案 0 :(得分:3)
There is a php bug that I believe relates to your problem.
简而言之,解决方案是在session_write_close()
之前运行file_get_contents()
,(在您的情况下为exec()
)