在urlencode上继续获得MAX超时错误

时间:2010-12-03 21:16:54

标签: php

我在这段代码上一直出错:

<?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似乎遇到了问题。

1 个答案:

答案 0 :(得分:0)

如果它之前有用,那么代码似乎没有任何问题,只是你发送它的对象很大,并且处理的时间比PHP中设置的默认执行时间要长。

处理此问题的快速而肮脏的方法是使用ini_set()函数: 的ini_set( “的max_execution_time”,840); (在这种情况下,840是840/60或14分钟)

之前我曾在一个查询中使用过这个结果集,一个至少需要五分钟加载的结果集,并为该页面构建HTML。

请注意,如果您的主机启用了“安全模式”,则无法使用此功能。在这种情况下,您实际上必须更改PHP.ini中的设置。否则,我经常使用这个快速而肮脏的环形交叉口来进行大量的解析/处理任务。