我有一个PHP文件,当选中复选框并单击一个按钮时,将调用具有以下代码的js文件
$.ajax ({
type: "POST",
url: "decisionExec.php",
dataType: "json",
data:({cnt:cnt,amGuide:guides.amGuide,folGuide:guides.folGuide,tichGuide:guides.tichGuide,nebGuide:guides.nebGuide,sterGuide:guides.sterGuide,ingGuide: guides.ingGuide }),
success: function(data) {
$("#message").html(data.message);//"Generating the files for the BookScouter results. An email will be sent when this is completed."
$("#start2").html(data.start);
} // end of success
}); // end of ajax
此代码工作正常,并使用POST
将正确的数据发送到我的php文件 $amG = $_POST['amGuide'];
$folG = $_POST['folGuide'];
$tichG = $_POST['tichGuide'];
$nebG = $_POST['nebGuide'];
$sterG = $_POST['sterGuide'];
$ingG = $_POST['ingGuide'];
我遇到的问题是这需要太长时间,所以我想使用passthru文件,就像我在其他领域一样,但无法弄清楚如何“通过”值 这是我的passthru php文件。
<?php
passthru('php /decision.php >> /web/webInv.txt &');
$now = date("m/d/y h:i:s");
$message = array('message' => 'An email will be sent when it is finished.',
'start' => 'Started at approx. ' . $now);
echo json_encode($message);
?>
关于我如何做到这一点的任何想法(这个文件需要大约30分钟来处理和发送电子邮件)
答案 0 :(得分:1)
我想你是在问如何将所有POST参数发送到decision.php
。您可以使用serialize()
或json_encode()
序列化它们,并将其作为命令行参数发送到脚本。
$args = escapeshellarg(serialize($_POST));
shell_exec("php /decision.php $args >> /web/webInv.txt 2>&1 &");
使用passthru
没有意义,因为输出被重定向,所以没有任何内容可以传递给客户端。
在decision.php
中,使用:
$_POST = unserialize($argv[1]);
获取参数。