управление потоком приложений между различными скриптами в PHP - PullRequest
0 голосов
/ 07 октября 2009

У меня есть скрипт php, который принимает POST-запрос в качестве слушателя веб-службы, а затем обрабатывает все данные в двух окончательных массивах, Я ищу способ инициировать второй сценарий, который GET для этих сериализованных массивов и сделать еще некоторую обработку. include () не подойдет для меня, так как я на самом деле хочу "освободить" или "завершить" первый скрипт после передачи данных

Ваша помощь, как всегда, ценится :)

РЕДАКТИРОВАТЬ - ОК, похоже, очередь может быть решением! я никогда не делал ничего подобного до каких-либо примеров или ссылок?

Ответы [ 3 ]

2 голосов
/ 07 октября 2009

Это должно произойти немедленно? В противном случае вы можете установить cronjob, который делает это каждые X минут. Вам придется создать какую-то очередь, в которой ваш первый скрипт прикрепляет «запросы» ко второму сценарию. Затем cronjob обрабатывает запросы в очереди.

1 голос
/ 07 октября 2009

Вы должны привыкнуть писать php-скрипты, которые представляют собой просто набор функций (по сути, никаких скриптов с автоматическим запуском). Таким образом, вы можете включить файл сценария вверху сценария, о котором вы говорите, а затем вызвать функцию, которая делает то, что вы хотите.

Например:

<?php
include('common_functions.php');
$array_1 = whatever_you_do_with_post_values();
$array_2 = other_thing_you_do_with_post_values();
// this function is located in 'common_functions.php'
do_stuff_with_arrays($array_1,$array_2); 
?>

Фактически:

Просто чтобы соответствовать тому, что я говорю:

<?php
include('common_functions.php');
do_your_stuff();
function do_your_stuff() {
    $array_1 = whatever_you_do_with_post_values();
    $array_2 = other_thing_you_do_with_post_values();
    // this function is located in 'common_functions.php'
    do_stuff_with_arrays($array_1,$array_2); 
}
?>

Очевидно, вы должны использовать лучшие имена функций и переменных, хаха.

0 голосов
/ 07 октября 2009

Я бы сделал все это в одном запросе. Это сокращает время ожидания и повышает эффективность всей операции.

Помните, что у вас может быть длительный запрос, но он может обслуживать другие запросы. Apache просто создаст другой процесс php для обработки другого запроса от веб-службы, даже если первый еще не завершен. Пока скрипт не блокирует общий ресурс (файл базы данных и т. Д.), Это будет работать просто отлично.

Тем не менее, вы должны использовать cURL для вызова второго скрипта. затем разместите несериализованный массив. cUrl позаботится об остальном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...