Отправить переменные из результатов ajax в php с помощью passthru
У меня есть файл 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
этот код работает нормально и отправляет правильные данные в мой файл php с помощью POST
$amG = $_POST['amGuide'];
$folG = $_POST['folGuide'];
$tichG = $_POST['tichGuide'];
$nebG = $_POST['nebGuide'];
$sterG = $_POST['sterGuide'];
$ingG = $_POST['ingGuide'];
У меня проблема в том, что это занимает слишком много времени, поэтому я хочу использовать passthru-файл, как и в других областях, но не могу понять, как "passthru" значения это мой php-файл passthru.
<?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 минут для обработки и отправки по электронной почте)
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]);
чтобы получить параметры.