在我现在的雇主,我们使用Ant来执行我们的构建脚本,我需要添加一个目标我们的build.xml文件,将启动是在后台的Gearman工人4个PHP脚本,然后停止这些脚本,一旦生成是完成。
我已经看过了“平行”和“守护”指令(是,正确的字?),但我没有足够的经验与Ant来追查我缺少关于如何确保脚本在后台运行的信息。
在我现在的雇主,我们使用Ant来执行我们的构建脚本,我需要添加一个目标我们的build.xml文件,将启动是在后台的Gearman工人4个PHP脚本,然后停止这些脚本,一旦生成是完成。
我已经看过了“平行”和“守护”指令(是,正确的字?),但我没有足够的经验与Ant来追查我缺少关于如何确保脚本在后台运行的信息。
由于你没有得到很多答案,我会建议可能让你启动一个低技术方法...
使用Ant的exec任务来火了4个后台PHP进程写自己的PID的文件,其中包括内部版本号(从环境大概)来识别它。
一旦建设完成后运行脚本再次以停止参数和使用的文件命名系统查找进程ID,杀死采取删除小罐文件。 也许值得你有某种陈旧的工作中有太多清洁剂。
不应该太硬敲了一些作品,直到你可以找到一个更好的解决方案。
这是任何对你有好处:
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