php会话文件死锁
在为某人修复网站时,我遇到了以下问题: 为了处理一些数据,它调用php会话文件死锁,php,linux,deadlock,Php,Linux,Deadlock,在为某人修复网站时,我遇到了以下问题: 为了处理一些数据,它调用exec(“/usr/bin/php/path/to/file.php input.dat”),而被调用的file.php包含一个include(“config.php”),该函数又包含对会话启动()的调用 出现的问题是死锁等待flock(“/tmp/sess\uuuuxxxxxx”)。父脚本锁定会话文件,然后执行的脚本尝试继续相同的会话,再次锁定该文件,但在等待该文件时陷入死锁 我试着在exec“ed脚本的开头添加以下内容,但并没
exec(“/usr/bin/php/path/to/file.php input.dat”)
,而被调用的file.php
包含一个include(“config.php”)
,该函数又包含对会话启动()的调用
出现的问题是死锁等待flock(“/tmp/sess\uuuuxxxxxx”)
。父脚本锁定会话文件,然后执行的脚本尝试继续相同的会话,再次锁定该文件,但在等待该文件时陷入死锁
我试着在exec
“ed脚本的开头添加以下内容,但并没有效果:
session_save_path("/tmp/alt_session");
session_id("NOTHING");
显然,在php脚本中调用exec(“php…”)
显然有些荒谬,但这是另一天的论据,我不能在这里更改。另外,虽然我可以随意更改在exec
下运行的文件,但更改config.php
会产生一些我更愿意避免的其他问题
还有其他选择吗,还是我遗漏了一些重要的东西?
简言之,解决方案是在文件获取内容()之前运行会话写入关闭()
,(在您的情况下是exec()
)是否需要在父脚本中打开会话?如果否-您可以在使用exec调用child之前session\u write\u close()