当一个脚本使用curl调用另一个脚本时,为什么session_start会导致超时

Jrg*_*gns 5 php post curl timeout

我有两个PHP脚本,都通过调用使用相同的会话session_name('MySessID').

当第一个脚本使用curl调用第二个脚本时,第二个脚本在session_start()调用时挂起.

为什么会发生这种情况?

小智 12

从PHP手册

http://php.net/manual/en/function.session-write-close.php

会话数据通常在脚本终止后存储而不需要调用session_write_close(),但是由于会话数据被锁定以防止并发写入,因此任何时候只有一个脚本可以在会话上运行.将框架集与会话一起使用时,由于此锁定,您将体验到逐个加载的框架.只要对会话变量进行了所有更改,就可以通过结束会话来减少加载所有帧所需的时间.

所以你不能让2个脚本同时使用同一个会话.


Jrg*_*gns 7

我不完全理解为什么会这样,但我解决了.

这个bug描述了我遇到的同样问题.我有一个脚本发布到另一个脚本,都使用相同的会话,显然停止PHP.

因此,在我执行整个curl post脚本之前,我调用该session_commit函数,以便结束调用脚本会话,并启用被调用脚本以重新启动会话.

重击...