@wtfowned

Как запустить нескольких скриптов параллельно из PHP под Windows Openserver?

Добрый день!
Нужно запустить N скриптов раз в какой то интервал времени, в зависимости от выполнения 1го скрипта в очереди.

1ый скрипт выполняется - определяет сколько скриптов (потоков) нужно запустить. Далее на основе этих данных нужно запустить с небольшой задержкой N скриптов.

Как это сделать? Передресовать 1ый скрипт на запуск потоков с переменной или как-то так, не пойму. Сейчас вручную запускаю через PHPSTORM все эти потоки и это дико неудобно.
  • Вопрос задан
  • 1048 просмотров
Решения вопроса 1
@wtfowned Автор вопроса
Решил следующим образом :
1. Скрипт1 по крону запускается, отрабатывает и записывает результат своего исполнения в txt файл (для логирования и не только).
2. Скрипт1 инклудит Скрипт2, который запускает через COM объект нужное количество скриптов (по-другому реализовать не получилось):
$com = new Com('WScript.shell');
$start_times = 10; // how much times to start
$go = 'script.php'; //scriptname
for ($i = 0; $i < $start_times; $i++) {
    $com->run('php C:\OpenServer\domains\scripts.loc\' . $go . ' 2>&1', 0, false);  //2ой параметр положительный чтобы консоль видимой была
}


Как итог запускается $start_times потоков $go скрипта.

Также написал из этого небольшую приблуду что можно запускать из любого скрипта улучшенный фрагмент предыдущего кода и запускать нужное количество потоков из вариантов скриптов, параметр 1 - количество, 2 - название скрипта (указано в массиве заблаговременно), 3 - тайминг между запусками.
exec("php C:\\OpenServer\\domains\\scripts.loc\\www\\exec.php 50 3 7 2>&1");
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Посмотри тут или в подобных решениях https://github.com/mitalcoi/yii2-cronjobs/blob/mas...
Ответ написан
Комментировать
@4iloveg
Full-Stack HTML Developer
В опенсервере крон есть.
Ответ написан
@MIKEk8
Наверно popen вам подойдёт.
php.net/manual/ru/function.popen.php
Или если более заморочено то proc_open .
php.net/manual/ru/function.proc-open.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы