首頁  >  文章  >  後端開發  >  PHP進行批次圖片處理時程式執行逾時

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

小云云
小云云原創
2018-02-22 11:04:532171瀏覽

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

在批次程式處理過程中,難免遇到程式執行時間過長,導致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_pa​​cket=100M

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

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

相關推薦:

關於微信小程式中圖片處理的問題總結

#(進階篇)php常用圖片處理類別

PHP圖片處理類別phpThumb參數用法介紹

#

以上是PHP進行批次圖片處理時程式執行逾時的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn