会话不能使用symfony 2.0在后台进程PHP文件中工作

时间:2014-09-11 10:40:58

标签: php symfony session

我正在后台发送电子邮件。对于后台进程,我使用的是symfony 2.0。背景成功。但是在后台我无法获得会话值。下面是index.php的代码

session_start();
$_SESSION['album_upload'] = {"a","b"};
$command = file_get_contents('background.php');
$process = new PhpProcess($command);
$process->run();

在background.php的代码下面

session_start();
$message = $_SESSION['album_upload'][0];
mail("webmaster@example.com","example",$message,"From: $from\n"); // Session doesn't give any value. 

如果我删除会话并尝试发送mail("webmaster@example.com","example","example","From: $from\n");之类的邮件,则会发送邮件。

如何在background.php。

中获取会话值

2 个答案:

答案 0 :(得分:2)

尝试从您的第一个脚本中检索会话ID并将其传递给下一个脚本。 您可以使用session_id() func

执行此操作

Code Index.php

$session_id = session_id();
new PhpProcess($command, null, array('session_id' => $session_id));
$process->start();
while ($process->isRunning()) {// waiting for process to finish }

代码background.php

session_id($_SERVER['session_id']);
session_start();
$message = $_SESSION['album_upload'][0];
mail("webmaster@example.com","example",$message,"From: $from\n"); // Session doesn't give any value. 

答案 1 :(得分:2)

PhpProcess作为一个单独的php进程运行;这意味着它无权访问服务器原始请求可用的$ _SESSION信息。

您可以按如下方式传递数据:

new PhpProcess($command, null, array('album_upload' => $_SESSION['album_upload'][0]));

这应该允许您将后台脚本中的数据作为变量:

$_SERVER['album_upload']