mtylerb Posted November 8, 2008 Share Posted November 8, 2008 Hey everyone, I have a plugin for a CMS that searches out multiple "archives" of articles and then sorts/limits (according to whatever the user says) then displays them as one array. One of the users has had a problem with an error: Fatal error: Maximum execution time of 30 seconds exceeded in /usr/home/web/user/frog/plugins/adv-find/index.php on line 45 The offending lines are: <?php private function trimc($limit) { $this->children = array_slice($this->children, 0, $limit); //Line 45 } ?> The whole class is: <?php Plugin::setInfos(array( 'id' => 'adv-find', 'title' => 'Advanced Find', 'description' => 'Allows you to search many different archives and sort them by date.', 'version' => '1.0.1', 'license' => 'AGPL', 'author' => 'Tyler Beckett', 'website' => 'http://www.tbeckett.net/articles/plugins/adv-find.xhtml', 'update_url' => 'http://www.tbeckett.net/fpv.xhtml', 'require_frog_version' => '0.9.4' )); error_reporting(E_ALL^E_NOTICE); class adv_find extends Page { private $search; private $vars; private $sortAttribute; public $children; private function sorty($attribute) { $this->sortAttribute = $attribute; usort($this->children, array($this, 'cmpVals')); } private function cmpVals($val1, $val2) { $search = $this->sortAttribute['0']; $order = $this->sortAttribute['1']; if (strtoupper($order) == 'DESC') { return (strcasecmp($val1->$search, $val2->$search)*-1); } return strcasecmp($val1->$search, $val2->$search); } private function trimc($limit) { $this->children = array_slice($this->children, 0, $limit); } public function adv_where($search, $vars) { // Use Frog's built in find function to search for each of the arguments provided foreach ($search as $sought) { $results[] = parent::find($sought); } // Use Frog's built in children function to get all children of the above searched for archives foreach ($results as $parent) { $children[] = $parent->children($vars); } // Count the number of archive variables in the array $total = count($children); // Count the number of children variables to each of the archive variables above for ($x = 0; $x <= $total; $x++) { $ctotal[$x] = count($children[$x]); } // Combine all the search results into one $combine variable $combine = array(); for ($x = 0; $x < $total; $x++) { for ($y = 0; $y < $ctotal[$x]; $y++) { array_unshift($combine,$children[$x][$y]); } } unset($children); $this->children = $combine; unset($combine); // If the user has chosen an order that they'd like the results in, order like so if (isset($this->vars['order'])) { $sve = explode(' ', $this->vars['order']); adv_find::sorty($sve); } // If the user wants to limit their results, trim the remaining off if (isset($this->vars['limit'])) { adv_find::trimc($this->vars['limit']); } return $this->children; } public function __construct($search,$vars) { // Instantiate all the variables necessary to do the search $this->search = $search; $this->vars = $vars; // Do the search and then save the results to $this->results $this->results = $this->adv_where($this->search,$this->vars); } } function adv_find($query, $args = '') { // Begin the process $found = new adv_find($query, $args); // Pass the results back to the user! return $found->children; } ?> I cannot, for the life of me, figure out why he'd have a max execution time problem. I currently display 16 articles on my RSS feed with no problems. Can anyone else here point me in a possible direction? Could it just be the user's server? Thanks in advance for any help. Link to comment https://forums.phpfreaks.com/topic/131895-max-execution-time-error/ Share on other sites More sharing options...
Mchl Posted November 8, 2008 Share Posted November 8, 2008 One way to fix it is to increase timeout time using set_time_limit();. But you should look for better solution of course. Link to comment https://forums.phpfreaks.com/topic/131895-max-execution-time-error/#findComment-685214 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.