在单独的进程中运行函数以避免segfault

时间:2013-12-13 09:59:43

标签: php unix ubuntu

我有一个很大的功能,我必须拨打50-100次。以前我用过像这样的bash脚本:

#!/bin/bash
for i in {1..50}
do
 RET=0
 until [ ${RET} -eq 1 ]; do
  php /scripts/cli.php $i
  RET=$?
 done
done

但是我在bash脚本中不是很好,而我需要用返回的值来增加逻辑,所以我尝试在纯PHP中用这样的函数实现它:

<?
require_once('cli.php');
for($cnt=1; $cnt<=50; $cnt++){
 $cli = cli($cnt);
}
?>

但是这种方法在10-15个周期后导致分段错误。是否可以在单独的进程中运行函数loke它是在bash脚本和清理资源以避免内存泄漏?

1 个答案:

答案 0 :(得分:1)

是的,如果你需要访问子进程stdin / stdout / stderr,你可以查看proc_open,或者你可以使用更简单的函数:exec()或passthru()。

那说.. PHP不应该是段错误,必须有一些你正在使用的错误扩展。我更专注于解决问题,而不是创建变通方法。