2012-02-28 1 views
1

Я использую PHP для программирования конкурсов (плохой выбор, я знаю, но это единственный язык, на котором я хорош). Часто, когда я создаю очень большую переменную, PHP возвращает пустую страницу. Ошибок не генерируется.Почему PHP иногда возвращает пустую страницу без ошибки?

Например, если у меня есть сценарий вроде этого:

<?php 
echo 'test'; 

$var=array(); 
for($i=0;$i<9999999999;$i++){ 
    $var[]=$i*9999999999; 
} 

Нет сигнала на выходе не будет выводиться; даже не «тест».

Есть ли способ предотвратить это?

P.S. Сценарий обычно заканчивается быстро, примерно через 2-3 секунды. Это заставляет меня думать, что PHP завершает сценарий, не дойдя до конца.

+1

Включено ли сообщение об ошибках? – jprofitt

+1

Возможно, вы достигли 'max_execution_time'. В зависимости от того, как настроена буферизация вывода, вы можете не видеть 'test' –

+0

. Для вашего сценария я вижу вывод' test' (я запускаю его в консоли), и после этого php начинает думать. Нет абсолютно никакой причины, по которой сценарии конкурса должны быть запущены в браузере – zerkms

ответ

3

Более вероятно, вы получаете

Fatal error: Allowed memory size of 134217728 bytes exhausted 

Есть несколько вещей, которые можно сделать, чтобы изменить это, а также для отображения ошибки. Один из них - либо изменить отчет об ошибках в файле php.ini, либо добавить

error_reporting(E_ALL); 
ini_set("display_errors", 1); 

в верхней части вашего кода. Второй - увеличение разрешенного размера.

Вы используете много памяти, пытаясь умножить это большое число, которое много раз. Почему вы пытаетесь это сделать? Есть ли другой способ, которым вы могли бы сделать то же самое?

Вот несколько ресурсов, которые можно использовать

увеличить размер http://www.mydigitallife.info/php-allowed-memory-size-exchausted-fatal-error/

Ошибка отчетности http://php.net/manual/en/function.error-reporting.php

Если вам не нужно я идти, что высокие (9999999999), кажется, очень высока. Уменьшите размер.

Другой вопрос, вы можете иметь это

Fatal error: Maximum execution time of 60 seconds exceeded 

Вы всегда можете увеличить время выполнения, если вы должны.

Максимальное время выполнения http://php.net/manual/en/function.set-time-limit.php

также Increase max execution time for php

Действительно все это зависит от того, какая ошибка, вы получаете, и, начиная с показывая сообщения об ошибках, это поможет определить, что реальная проблема под рукой.

Смежные вопросы