Отправить переменные из результатов 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]);

чтобы получить параметры.

Другие вопросы по тегам