Php passthru()、system()或exec()冒泡的异常
在我自己的测试中,我无法使用类似系统的命令冒泡异常。只是好奇有没有办法让这一切发生 test1.php:Php passthru()、system()或exec()冒泡的异常,php,exception,exec,try-catch,Php,Exception,Exec,Try Catch,在我自己的测试中,我无法使用类似系统的命令冒泡异常。只是好奇有没有办法让这一切发生 test1.php: <?php try { // None of these (which throw an exception) // allow exception to be caught here passthru("php -f test2.php"); system("php -f test2.php"); exec("ph
<?php
try {
// None of these (which throw an exception)
// allow exception to be caught here
passthru("php -f test2.php");
system("php -f test2.php");
exec("php -f test2.php");
} catch (Exception $e) {
echo( "Caught exception: " . $e->getMessage() );
}
?>
<?php
// Throw an exception
throw new Exception();
?>
test2.php:
<?php
try {
// None of these (which throw an exception)
// allow exception to be caught here
passthru("php -f test2.php");
system("php -f test2.php");
exec("php -f test2.php");
} catch (Exception $e) {
echo( "Caught exception: " . $e->getMessage() );
}
?>
<?php
// Throw an exception
throw new Exception();
?>
我知道它可以包含在内,但对于我来说,我不能使用它。以这种方式执行脚本时,是否有方法捕获或“冒泡”异常 不,你能做的最好的事情就是阅读标准
php
只能输出文本。就像@minitech所说的,你必须在STDERR
上收听
当您通过system()
access命令调用PHP脚本时,它将作为单独的进程运行,而您的调用脚本无权访问该进程
如果您想这样做,您可以查看扩展
如果没有,则必须测试来自
system()
调用的响应,而不是试图捕获异常。我得调查一下。我觉得我应该能够在自己的内存范围内执行脚本并捕获任何异常,然后在任何其他处理之前执行结束/内存清理。有些事告诉我,我把事情弄得比实际情况更复杂了。记住上下文。运行shell\u exec
,system()
等时。。当您发出命令时,它将退出PHP上下文。为什么不仅仅是包含
/需要
并从您的脚本执行,而不是进行系统调用?因为我正在为我正在创建的文件迭代文件,它可能包括100个甚至1000个文件,这些文件会占用内存,直到崩溃。正在寻找替代方案来执行脚本并捕获其异常,然后从内存中清除它。但是如何在STDERR上侦听呢?