2012-01-09 5 views
0

Иногда я получаю ошибку выполнения скрипта, где она занимает более 30 секунд. Это всегда в моем файле соединителя. Не могли бы вы взглянуть на пелазу и сообщить мне, если вы скажете что-нибудь очевидное ...PHP - Максимальное время выполнения 30 секунд превышено

Я нахожусь на VPS, поэтому у меня есть полный контроль над сервером, поэтому я могу внести любые необходимые изменения.

session_start(); 
date_default_timezone_set('Europe/London'); 
$uTime = time(); 
$uDate = date('Ymd',$uTime); 
$onlineLimit = 1800; 
$activeLimit = 3628800; 
$fDate = date('Ymd', strtotime('next monday')); 
$time_start = microtime(true); 

$db = mysql_connect("localhost", "xxxxxxx", "xxxxxxxx") or die("Could not connect."); 
if(!$db) 
die("no db"); 
if(!mysql_select_db("xxxx",$db)) 
die("No database selected."); 
if(!get_magic_quotes_gpc()) 
{ 
    $_GET = array_map('mysql_real_escape_string', $_GET); 
    $_POST = array_map('mysql_real_escape_string', $_POST); 
    $_COOKIE = array_map('mysql_real_escape_string', $_COOKIE); 
} 
else 
{ 
    $_GET = array_map('stripslashes', $_GET); 
    $_POST = array_map('stripslashes', $_POST); 
    $_COOKIE = array_map('stripslashes', $_COOKIE); 
    $_GET = array_map('mysql_real_escape_string', $_GET); 
    $_POST = array_map('mysql_real_escape_string', $_POST); 
    $_COOKIE = array_map('mysql_real_escape_string', $_COOKIE); 
} 
    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'")or die(mysql_error()); 

    $page = $_SERVER['PHP_SELF']; 
    $season = mysql_fetch_assoc(mysql_query("SELECT `id`,`start`,`end` from `season` order by `id` DESC limit 0,1")); 
    $seasonDays = round((strtotime($season['end'])-strtotime($season['start']))/86400); 
    $currentDay = ceil(($uTime - strtotime($season['start']))/86400); 
+0

Любые идеи, что линия умирает от? – slugonamission

+0

Является ли ошибка довольно простой в воспроизведении? Если это так, я бы поставил эхо-инструкции в разных точках файла, чтобы определить, какая строка выберет время. они могут быть такими же простыми, как «echo» step 1 «', 'echo» step 2 »и т. д. – MrGlass

+0

Ничто в этом коде не должно вызывать тайм-аут ... это весь ваш код? –

ответ

3

я бы установить более высокое время max_execution в php.ini, и вы увидите, где он умрет ...

4

добавить set_time_limit(0); в верхней части кода, это позволит ему работать без ограничений по времени ,

UPDATE, чтобы быть в безопасности, как указано в нижеследующих комментариях x в set_time_limit(x);, до максимального количества секунд выполнения. 0 = бесконечное

+2

Я проголосовал, но нет реального ответа ... Я лично рекомендовал бы против установки предела как 0 (infinate), поскольку скрипты могут запускаться вечно, если вы делаете бесконечный цикл. Спасибо за ответы – DugoutSoccer

+0

Установлено, чтобы 0 было действительно плохо. Запущено голосование, потому что set_time_limit() - это наименее интрузивный метод для изменения временного ограничения времени, поскольку он может быть выполнен inline. – Aknosis

0

Вы также можете установить его в файле .htaccess в корневом каталоге вашего сайта с:

php_value max_execution_time 3600 
Смежные вопросы