В моем нынешнем работодателе мы используем Ant для выполнения наших скриптов сборки, и мне нужно добавить цель в наш файл build.xml, который запустит 4 PHP-скрипта, которые являются рабочими Gearman в фоновом режиме, а затем остановите эти сценарии после сборки сделанный.
Я посмотрел на директивы «parallel» и «daemons» (это правильное слово?), Но я недостаточно опытен с Ant, чтобы отслеживать информацию, которую я не вижу, как убедиться, что сценарий работает в фоновом режиме ,
Поскольку вы не получаете много ответов, я предлагаю низкотехнологичный метод, который может заставить вас начать …
Используйте задачу ant exec, чтобы сбить 4 фоновых php-процессов, записывая их pid в файл, который включает номер сборки (предположительно из среды), чтобы идентифицировать ее.
После того, как сборка завершена, снова запустите скрипт с параметром stop и используйте систему именования файлов, чтобы найти идентификаторы процессов, убить и удалить файлы пропусков. Вероятно, стоит того, чтобы у вас был какой-то черновой уборщик.
Не должно быть слишком сложно подбить то, что работает, пока вы не найдете более элегантное решение.
Это хорошо для вас:
test.php: (это будет ваш рабочий сценарий)
<?php while (true) { echo "Hello world" . PHP_EOL; sleep(5); }
runner.sh:
#!/usr/bin/bash FILE_TO_RUN=test.php if [ -z $TEST_RUNNERS ]; then TEST_RUNNERS=4; fi; if [ -z $BUILD_NUMBER ]; then echo "Can not run without a build number"; exit 1; fi; FILE="${BUILD_NUMBER}.run" if [ -e $FILE ]; then while read line; do echo "Killing process " $line kill -9 $line done echo "Deleting PID file" rm -f $FILE exit 0 fi < $FILE for ((i=1; i<=$TEST_RUNNERS; i++)); do echo "Setting up test runner number " $i " of " $TEST_RUNNERS; php $FILE_TO_RUN & echo "PID number: " $! echo $! >> "${BUILD_NUMBER}.run" done exit 0