February 16, 2008
set_time_limit: Learn It, Know It, Live It
Filed by Phil at 4:04 pm under Television, TV Guide, PHP
I’ve got the basic code for importing our TV programs and schedule data working. In a nutshell, PBS provides us an XML feed of schedule data provided by TV Guide for each of our channels. Using FeedAPI and a custom module we’re importing these data and creating various nodes. It basically works as intended! Gotta like that.
More later on the exact implementation details, but I was running into one problem: each time I tried to ingest a feed I was running into the following errors:
Fatal error: Maximum execution time of 30 seconds exceeded in… blah blah blah
Based on my years of application development experience and a very keen gut instinct I quickly surmised that a fatal error is bad. I then dug in to see what was doing here.
As the error message said, the code was timing out; it was taking longer than the maximum execution time as defined by the PHP setting variable max_execution_time. One possible solution here is to increase this value in the setting.php file. For example, we could double it to 60 seconds via:
ini_set('max_execution_time', '60');
This would increase the maximum execution time for all Drupal processes. Rather than do that, I chose option B, which involves the PHP function set_time_limit. You can call this function in a PHP script and it will restart the timeout counter, effectively increasing the maximum execution time on the fly.
So, I added the following call to a routine in the feed processing code, which gets called each time a record in the feed:
set_time_limit(30);
Voila! Problem solved. Time for a beer.
