在为某人修复网站时,我遇到了以下问题:
为了处理一些数据,它调用exec("/usr/bin/php /path/to/file.php input.dat")
,而被调用的file.php
包含一个include("config.php")
,而又包含对session_start()
的调用。
出现的问题是等待flock("/tmp/sess_XXXXXX")
的死锁。父脚本锁定会话文件,然后exec
脚本尝试继续相同的会话,再次锁定该文件,但在等待它时陷入僵局。
我尝试将以下内容放在exec
脚本的最开头,但无济于事:
session_save_path("/tmp/alt_session");
session_id("NOTHING");
从 php 脚本中调用 exec("php ...")
显然有些荒谬,但这是另一天的争论,我不能在这里改变。此外,虽然我可以自由更改在 exec
下运行的文件,但更改config.php
会产生一些我宁愿避免的其他麻烦。
还有其他选择,还是我错过了一些重要的东西?
php 错误与您的问题有关。
简而言之,解决方案是在file_get_contents()
之前运行session_write_close()
(在您的情况下会exec()