2009-11-27 144 views
2

我在Win XP上安裝了WAMP 2.0服務器。 Apache版本:2.2.11 PHP版本:5.3 MySQL:5.1.36Apache httpd錯誤和崩潰

我在mysql中有大約11個表。我的Web應用程序(HTML/Jquery/PHP/MySQL)每運行一次,就會在其中兩個表中填充大約100行(其中一個表有2個Long blob列,上傳大小高達20MB的數據,我更改了Max_allowed_pa​​cket大小到32M my.ini文件)

該應用程序工作正常約3周,直到表中的行數達到> 1500。

然後我看到的httpd崩潰消息(apache httpd的遇到錯誤,需要關閉 )和它說非法內存refernce 請在下面找到一些日誌

szAppName : httpd.exe  szAppVer : 2.2.11.0  szModName : php5ts.dll  
szModVer : 5.3.0.0  offset : 0000c309  


C:\DOCUME~1\blrcom\LOCALS~1\Temp\WERc677.dir00\httpd.exe.mdmp 
C:\DOCUME~1\blrcom\LOCALS~1\Temp\WERc677.dir00\appcompat.txt 

如果我清除了兩個表(1500>行)。問題仍然存在。

我正在使用PDO PHP更新表。

任何人都可以引導我,因爲這正在成爲一個阻滯劑。

問候, 大額牛

+0

你檢查了Windows的事件日誌,看看導致崩潰的原因是什麼? – mauris 2009-11-27 07:45:03

+1

上面貼出的「日誌」幾乎告訴我們什麼都沒有。您可以自己閱讀小型轉儲(http://social.msdn.microsoft.com/Forums/en/isvwindowserrors/thread/cb0af233-8d6e-417a-a271-56148a8ff0ef,http://windowscoding.com/blogs/blake/archive /2009/05/12/opening-a-mini-dump-file-mdmp-file-with-WinDbg.aspx)。如果確實是一個bug,請將其報告給適當的(可能是PHP或MySQL)開發人員。 – outis 2009-11-27 08:04:51

+0

錯誤應用程序httpd.exe,版本2.2.11.0,錯誤模塊php5ts.dll,版本5.3.0.0,錯誤地址0x0000c309。 – Vidya 2009-11-27 08:09:36

回答

3

問題:

我有一個懷疑,你打一個2GB的文件大小的牆。與您的設置2問題:

  • 第一個問題:您在Windows上運行此。
  • 第二個問題:你正在windows上運行這個。 :-)

原因:

笑話不談,在其根文件夾Mysql的存儲數據(例如C:\ Program Files文件\的MySQL \ MySQL服務器5.0 \數據)。每個子文件夾都對應於您的MySQL實例中的一個數據庫。每個文件夾內都有一個擴展名爲.frm的文件,它對應於您的表格。查看您要上傳的表格是否接近2 GB的上限。考慮到你有一列存儲上傳 20 Mb * 1500行 - 大致在2 GB左右(假設你的大部分文件都小於20 MB)不幸的是,Windows XP處理大於2GB的文件非常困難 - 文件系統和操作系統的限制。人們對他們的前景有困難的原因也是一樣 - 因爲他們不會對他們的電子郵件進行分類或清理。

SOLUTION:

第三個問題 - 你存儲在數據庫二進制數據 - 從來就不是一個好主意。將它存儲在磁盤上 - 只需在你的數據庫中引用它(名稱或路徑)。或者,如果您移動到支持更大文件大小的** nix *系統,您可以保留一段時間的當前設置。但是,將這種大小的二進制數據直接存儲在數據庫中仍然是一個糟糕的主意。這也使得你的數據庫搜索速度更慢,備份更慢(因爲在MySQL中沒有簡單的增量備份)

希望有所幫助。

編輯:

我忘了提,因爲你正在使用WAMP,你MySQLfolder將是你的WAMP安裝文件夾。默認情況下,我認爲它應該在c:\ wamp \ mysql \ data中 - 但我不確定。我通常在Windows上使用XAMMP。

1

有很多的爲什麼發生這種情況的可能原因。你是否在內存中保存了所有20 MB的對象數組?隨着增長,你可能會增加apache的每個進程大小到你內存不足的地步。