2013-03-04 23 views
0

我寫了一個php腳本來創建在MYSQL中爲另一個表創建隨機數據條目。我用while循環進行插入操作。循環計數接近1600,但腳本在250或333次循環計數後自動終止,沒有任何錯誤。造成這種問題的原因是什麼?解決方案有哪些?事先感謝。如何處理突然終止PHP腳本的情況?

+0

你應該給你的代碼,所以我們可以找到錯誤。什麼是「突然終止」:是循環結束還是腳本結束? – Voitcus 2013-03-04 07:26:15

+0

你能分享你的代碼嗎?爲什麼你需要1600插入? – 2013-03-04 07:27:04

+0

嚴重內存溢出? – sdespont 2013-03-04 07:28:49

回答

0

嘗試將此添加到您的腳本的開頭:

<?php 
error_reporting(E_ALL); 
ini_set("display_errors", 1); 

如果從控制檯運行腳本,就像如果你ssh到服務器並運行:

php my_script.php 

然後它應該馬上告訴你這個問題,現在可能是你通過獲取一個網頁(如http://www.myserver.com/my_script.php)來運行腳本,在這種情況下,你需要記住大多數Web服務器在腳本上放置超時(比如60或90秒),並在超時後,它只是殺死腳本,因爲它認爲這是沒有用腳本會做錯事,所以它主要取決於你的服務器配置


所以問題是超時,你可以嘗試在腳本的開頭添加:

set_time_limit(0) 

但如果PHP被設置爲在safe_mode設置運行,不能爲腳本來更新最大執行時間,可惜的是沒有什麼可以做的有....

+0

我使用了類似於下面的錯誤處理程序。但我沒有收到這種情況下的任何錯誤。功能customError($錯誤號,$ errstr) \t \t { \t \t回聲 「錯誤: [$錯誤號] $ errstr」; \t \t die(); \t \t} \t \t //設置錯誤處理程序; \t \t set_error_handler(「customError」); – 2013-03-04 07:38:50

+0

1)您是否添加了error_reporting標誌來顯示屏幕上的每個錯誤警告,並將display_errors設置爲1,這樣即使php配置設置爲不顯示任何錯誤,它也會顯示錯誤? 2)你是從ssh bash運行腳本還是請求網頁? – rorra 2013-03-04 07:43:38

+0

試着用你的代碼。我得到了致命錯誤:在84行的'filepath'中超過了30秒的最大執行時間。感謝您的幫助。如何解決這個問題? @rorra – 2013-03-04 07:48:06