我在这段代码上一直出错:
<?php
function encode_object(&$obj) {
foreach ($obj as &$current) {
if (is_string($current) or is_object($current) or is_array($current)) {
if (is_object($current) or is_array($current)) {
encode_object($current);
}
if (is_string($current)) {
$current = urlencode($current);
}
}
}
}
?>
此代码以前有效,但出于某种原因,每次运行时我都会得到:
致命错误:第9行*中超出了30秒的最长执行时间
我正在尝试做的是能够给它一个对象,搜索它并编码所有字符串。
我已多次尝试但仍然遇到同样的错误
我正在使用: Apache 2.2.15.0 PHP 5.3.3 Windows 7 Ultimate build 7600
编辑: 我输入的输入是一个错误,在经过这个函数之后,意味着要转换成JSON并通过javascript通过ajax读取。 这种情况下的输入是:
array("error"=>
array(
"error"=>"error",
"number"=>2,
"message=>"json_encode() [<a href='function.json-encode'>function.json-encode<\/a>]: recursion detected",
"line"=>22))
这是我后来会担心的另一个错误,但似乎我放了 $ obj ['error'] ['message'] ='blah'; 在我发送之前对象,代码工作正常。
有一些东西 json_encode() [<a href='function.json-encode'>function.json-encode<\/a>]: recursion detected
urlencode似乎遇到了问题。
答案 0 :(得分:0)
如果它之前有用,那么代码似乎没有任何问题,只是你发送它的对象很大,并且处理的时间比PHP中设置的默认执行时间要长。
处理此问题的快速而肮脏的方法是使用ini_set()函数: 的ini_set( “的max_execution_time”,840); (在这种情况下,840是840/60或14分钟)
之前我曾在一个查询中使用过这个结果集,一个至少需要五分钟加载的结果集,并为该页面构建HTML。
请注意,如果您的主机启用了“安全模式”,则无法使用此功能。在这种情况下,您实际上必须更改PHP.ini中的设置。否则,我经常使用这个快速而肮脏的环形交叉口来进行大量的解析/处理任务。