Сведения о вопросе

LARVION

21:59, 14th August, 2020

Теги

PHP    

Рекурсивный запуск PHP скриптов?

Просмотров: 311   Ответов: 7

Подскажите, возможно ли рекурсивно запускать скрипты?


Чтобы было яснее, приведу пример.

Пусть имеется список изображений (вида id — filepath), которые нужно обработать. Мы вызываем скрипт a.php с параметром id первого изображения, например a.php?id=1. Скрипт обрабатывает одно изображение и вызывает сам себя, но с параметром id следующего изображения, например a.php?id=2, а сам умирает. Возможно ли реализовать такую систему?



  Сведения об ответе

ASER

07:26, 21st August, 2020

В этом вопросе тоже поднимали вопрос запуска некой задачи в php отдельным процессом:


  Сведения об ответе

crush

13:34, 24th August, 2020

если под «обработкой» не подразумевается их вывод, то достаточного что-то типа такого:
//обращение к a.php?id=0
//обработка картинки с id=0
$id=$_GET['id'];
$id++;
header(«Location: site.ru/a.php?id=$id»);


  Сведения об ответе

ASER

12:52, 20th August, 2020

А не подойдет ли CRON для этих целей?

Если известно примерное время обработки одной картинки, то лучше настроить выполнение скрипта по крону каждые N минут. Сам php-скрипт получает следующую картинку и приступает к обработке, после чего отмечает данную «задачу» как выполненную и завершается.


  Сведения об ответе

COOL

14:49, 23rd August, 2020

Вот еще есть вариант, который, наверное, не во всех случаях поможет, но все же приведу его…

Если это применимо, делается html-страница, на которой ajax'ом отправляется запрос к php-скрипту на сервере. После возвращения успешного ответа делаем паузу и отправляем запрос еще раз. И так далее.

Я так делал составления Sitemap для своего сайта.

Требования: загрузка изначальной html-страницы в броузере
Ограничение: максимальное выполнение выполнение php-скрипта (в настройках сервера).


  Сведения об ответе

VCe znayu

14:33, 14th August, 2020

Что вы делаете с изображениями? Я думаю можно обойтись без извратов.
А чтобы вызвать php из консоли с параметром нужно в начале скрипта писать так


if ($argc > 0) {

  for ($i=1; $i < $argc; $i++) {

    parse_str($argv[$i], $tmp);

    $_REQUEST = array_merge($_REQUEST, $tmp);

  }

}


и вызывать так
exec("/usr/bin/php /var/www/c.php id=1 > /dev/null &");


  Сведения об ответе

SILA

02:22, 9th August, 2020

Как вариан еще в конце выполнения скрипта с a.php?id=1 отправь get/post http-запрос на скрипт с a.php?id=2.


  Сведения об ответе

PIRLO

07:45, 2nd August, 2020

Под апачем можно воспользоваться virtual, который выполняет апачевские подзапросы, но тут жесткая завязка от апача, для других серверов можно сэмулировать эту функциональность делая внешний запрос (через curl, socket'ы, да хотя-бы file_get_contents), ну и чтобы один скрипт не ждал завершения другого первый после запроса жестко прерывать, а во втором установить ignore_user_abort
А если не секрет, зачем вам такие хитрые изыски?


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться