PHP進行批量圖片處理時程式執行逾時

來源:互聯網
上載者:User
本次批量處理是因為該項目本身經過多次外包,圖片儲存的到處都是,且沒有專門產生縮圖和統一尺寸的圖片,這次是在原有圖文混排的資料中提取圖片,儲存到指定目錄、裁剪尺寸並產生相應縮圖,並將結果儲存到資料庫。

在批配量序處理過程中,難免遇到程式執行時間過長,導致504錯誤等,調整伺服器配置其實不是很好的解決方案,畢竟對生產環境動刀子...

不過我比較懶,不想對一次提取的圖片再進行分頁請求處理^_^

順便說一句,最多的一次處理的資料提取的圖片達到3000張~

下面進入正題,我們的主要目的是儘可能延長程式執行時間,使該抓到的圖片都抓到,並處理完成寫到資料庫。

我們的環境是基於nginx的PHP5.6,首先代碼上要注意的,一個是放上set_time_limit(0),這避免去調整php.ini,當然有些基本的比如最大記憶體等等還是要調的,這裡不做介紹;另一個必須要設定curl的CURLOPT_TIMEOUT(我用的CURL抓遠程圖片)考慮到圖片都是在已知的多台伺服器上,逾時抓不到一定是有問題的索性放棄,如果不設定這個逾時,運行時會不停的給你報錯。

接下來就是伺服器了,首先是nginx的程式執行時間:

fastcgi_connect_timeout 900s;

fastcgi_send_timeout 900s;

fastcgi_read_timeout 900s;

這個配置在nginx.conf內,有則修改值,沒有追加上,時間上根據自己情況設定,調整後重啟服務。

MYSQL也會報逾時錯誤,修改my.ini添加或修改一下配置:

wait_timeout=2880000

interactive_timeout=2880000

max_allowed_packet=100M

調整後重啟mysql以便生效,經過上面的設定,基本掃清逾時報錯的各種情形,我的程式跑了2天3夜,採集和產生共計86G圖片。

再強調一下,這麼操作並不十分推薦,特別是生產環境下,會帶來很多問題,最重要的,完成批量任務後,恢複上述設定~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.