我编写了一个PHP脚本,该脚本贯穿文本文件(实际上是imdb的“列表”文件)并将其存储在本地MySQL数据库中。
public static function updateMovies( $list ) { $offset = 15; // movies.list start with movie names at line 16 $handle = fopen($list, "r") or die("Couldn't get handle"); if ($handle) { while (!feof($handle)) { $buffer = fgets($handle); if($offset!=0) $offset--; else if($buffer[0] != '"'){ $title = trim( substr( $buffer, 0, strpos( $buffer, '(' ) ) ); $year = intval(trim( substr( $buffer, strpos( $buffer,'(' )+1, 4 ) )); Movie::create( $title, $year ); } } fclose($handle); } }
由于这些列表文件最大为200MB,因此需要花费大量时间。默认情况下,PHP MAX_EXECUTION_TIME设置为30秒。
MAX_EXECUTION_TIME
我将此值设置为300只是为了尝试是否可行。例如,我的“ movies.list”文件约为80MB,并使用此脚本运行了300秒,在数据库中创建了约25000行。这行不通,因为我什至没有看过以“ B”开头的电影。
我知道我可以将其设置MAX_EXECUTION_TIME为0(无限制),但是将来我不希望该数据库位于我的本地主机上。MAX_EXECUTION_TIME据我所知,我希望在我的Web服务器上将它设置为90,并将Web服务器的主机设置为90。
有什么想法您将如何处理?
您可以:使用set_time_limit(sec) 或(更好)从命令行通过cron条目运行脚本。这样,您将避免许多其他非PHP相关的超时问题。