2012-02-28 82 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 2012-02-28 04:09:46

+1

您可能已達到'max_execution_time'。根據輸出緩衝的配置方式,你可能看不到'test' – 2012-02-28 04:10:03

+0

對於你的腳本,我看到'test'輸出(我在控制檯中運行它),之後php進行思考。比賽腳本絕對沒有理由在瀏覽器中運行 – zerkms 2012-02-28 04:11:08

回答

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

真的這一切都取決於你做了什麼錯誤,並通過顯示錯誤報告開始,這將有助於確定哪些手頭真正的問題。

相關問題