在后台运行php脚本与会话访问

时间:2012-05-02 09:08:52

标签: php session background-process

我需要从将在后台运行的主脚本调用php脚本(我只想调用并继续而不等待响应) 但我需要访问被调用脚本中的用户会话

4 个答案:

答案 0 :(得分:2)

我的建议是不要使用默认的PHP会话,因为使用后台进程可能会很棘手....我建议session_set_save_handler http://www.php.net/manual/en/function.session-set-save-handler.php进行数据库基础会话

这里有一个很好的例子http://www.php.net/manual/en/function.session-set-save-handler.php#96305

答案 1 :(得分:0)

致电

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

使用$ maxlen = 0;

在文件名中,您可以提供网址。在该url传递会话id和被调用脚本中使用session_id()设置会话ID,然后调用session_start()。

确保被调用脚本使用flush()和ob_flush()返回至少520个虚拟字符,以便调用脚本不等待。

答案 2 :(得分:0)

"会话背后的重点"是这样的,用户客户端可以在“无状态”状态下多次连接到服务器。时尚,但仍然保持"状态"像一个单一的连接。 "会话"数据在来自同一用户客户端的多个连接之间共享。

当你在服务器上产生后台进程时,无论你是否使用PHP," session"不再有任何实际意义。用户甚至可以关闭其客户端计算机,而不会影响服务器后台进程。

考虑到这一点,使用其他地方建议的Cookie是完全没用的。 Cookie保存在客户端计算机上,后台进程将对其进行零访问。

如果您的后台进程需要客户端信息,那么调用进程需要以某种方式将其传递给后台进程,作为某种参数或某种数据文件。

我建议保存" $ _ SESSION"变量作为Json编码的数据字符串到临时文件。后台进程可以读取该文件,Json将其解码回数组,然后使用它就像它仍然是$ _SESSION一样。然后删除临时文件。

答案 3 :(得分:-1)

$_COOKIE['PHPSESSID'] = 'user_session_id';//Transfer parameters through $GLOBALS['argv']
session_start();