我有幾個關於PHP內存使用情況的問題。我將自己運行一些測試,但獲得各種建議是非常有幫助的。睡眠和循環期間的PHP內存使用情況
我最近了解到PHP函數ignore_user_abort(),它允許腳本在用戶關閉頁面時繼續運行。我正在考慮將此用於我的電子郵件通訊工具而不是Cron作業,因爲配置Cron作業有各種可能。使用AJAX請求讓用戶停留在頁面上,以及在頁面內容交付後運行部分腳本的另一種方法也存在問題。
我的解決方案是在腳本開始處運行調用ignore_user_abort(true),並在內容生成後最後調用flush()以獲得較好的度量,然後運行通訊腳本。或者,使用AJAX做到這一點。
首先,有沒有人看到這種方法的問題?其次,如果我使用了沒有時間限制的腳本,並且每個電子郵件都有一個while循環,那麼如果我一次完成它,內存使用會是什麼樣子?由於我會覆蓋變量,而不是使用新變量,所以我認爲它會很低。
第三,因爲如果我發送大量的電子郵件,比如每次運行1000次,我不想超載我的郵件服務器。用我的cron作業,我每5分鐘運行腳本,發送一批50封電子郵件。如果我一次性完成這項工作,我可以發送50封電子郵件,打電話給睡5分鐘,然後再繼續發送50封電子郵件嗎?如果是這樣,睡眠期間的腳本內存使用情況如何?這會是一種有效的方法嗎?
我真正想在這裏做的是想出一個方法來創建一個通訊工具,不需要複雜的(對於非技術人員)設置一個Cron作業任務(這不是甚至是共享主機上的一個選項),並且不需要用戶在單個頁面上保持瀏覽器打開狀態。
歡迎任何意見建議或意見。謝謝!
['memory_get_usage()'](http://php.net/manual/en/function.memory-get-usage.php)會告訴你。 – alex 2011-03-20 23:25:00
@alex我做了一個基本的測試,在那裏我記錄了啓動內存使用情況,循環100,000次,給一個變量分配一個MD5()'d值(基於循環迭代),並看到最小的內存增加。我假設這意味着循環1000次發送電子郵件的腳本不應該比發送電子郵件50次的腳本增加更多。 同樣基於我的測試,腳本在睡眠週期內佔用相同數量的內存,雖然很難說。 – 2011-03-20 23:43:37
這是你計劃分配的東西嗎? – 2011-03-20 23:44:38