php捕捉异常继续程序,php – 抓住致命异常并继续

我知道,根据它的定义,一个致命的异常应该杀死执行,不应该被压制,但这是问题所在.

我正在运行一个脚本,在数据库中擦除,解析和存储大约10,000页.这需要几个小时,在极少数情况下(1000个中有1个)页面无法解析并抛出致命异常.

目前,我这样做:

for ($i=0;$i

{

$classObject = $classObjects[$i];

echo $i . " : " . memory_get_usage(true) . "\n";

$classDOM = $scraper->scrapeClassInfo($classObject,$termMap,$subjectMap);

$class = $parser->parseClassInfo($classDOM);

$dbmanager->storeClassInfo($class);

unset($classDOM,$class,$classObject);

}

我能做点什么吗

for ($i=0;$i

{

$classObject = $classObjects[$i];

echo $i . " : " . memory_get_usage(true) . "\n";

try

{

$classDOM = $scraper->scrapeClassInfo($classObject,$termMap,$subjectMap);

$class = $parser->parseClassInfo($classDOM);

$dbmanager->storeClassInfo($class);

unset($classDOM,$class,$classObject);

}

catch (Exception $e)

{

//log the error here

continue;

}

}

上面的代码不适用于致命异常.

是否有可能做这样的事情:

如果我将主循环移动到方法中,然后从register_shutdown_function调用该方法?

像这样:

function do($start)

{

for($i=$start;$i

{

//do stuff here

}

}

register_shutdown_function('shutdown');

function shutdown()

{

do();

}

这是执行停止时输出的消息:

Fatal error: Call to a member function find() on a non-object in ...

当我正在使用的方法无法解析页面时,我希望上面的消息.我很好,只是跳过该页面并继续循环的下一次迭代.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值