我正在后台发送电子邮件。对于后台进程,我使用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: $fromn"); // Session doesn't give any value.
如果我删除会话并尝试像mail("webmaster@example.com","example","example","From: $fromn");
一样发送邮件,那么邮件就会发送。
如何在background.php中获取会话值。
尝试从第一个脚本中检索会话id,并将其传递给下一个脚本。您可以使用session_id()函数
代码索引.php
$session_id = session_id();
new PhpProcess($command, null, array('session_id' => $session_id));
$process->start();
while ($process->isRunning()) {// waiting for process to finish }
代码背景.php
session_id($_SERVER['session_id']);
session_start();
$message = $_SESSION['album_upload'][0];
mail("webmaster@example.com","example",$message,"From: $fromn"); // Session doesn't give any value.
PhpProcess作为一个单独的php进程运行;这意味着它无法访问服务器原始请求可用的$_SESSION信息。
您可以按如下方式传递数据:
new PhpProcess($command, null, array('album_upload' => $_SESSION['album_upload'][0]));
这应该允许您将后台脚本中的数据作为变量进行访问:
$_SERVER['album_upload']