伺服器產生縮圖的時機一般分為兩種:
#1.上傳檔案時產生
#優點:上傳時就已經產生需要的縮圖,讀取時不需要再判斷,減少cpu運算。
缺點:當縮圖尺寸改變時或新增尺寸時,需要重新產生所有的縮圖。
2.訪問時生成
#優點:1.當有用戶訪問時才需要生成,沒有訪問的不用生成,節省空間。
2.當修改縮圖尺寸時,只需要修改設置,而無需重新產生所有縮圖。
缺點:當縮圖不存在需要產生時,高並發存取會非常耗伺服器資源。
雖然存取時產生會有高並發問題,但其他優點都比第一種方法好,因此只要解決高並發問題就可以。
關於如何根據url自動產生縮圖的原理及實現,可以參考我之前寫的《php 根據url自動產生縮圖》。
高並發處理原理:
#1.當判斷需要產生圖片時,在tmp/目錄建立一個暫存標記文件,檔案名稱以md5(需要產生的檔案名稱)命名,處理結束後再將暫存文件刪除。
2.當判斷要產生的文件在tmp/目錄有臨時標記文件,表示文件正在處理中,則不調用生成縮圖方法,而等待,直到臨時標記文件被刪除,產生成功輸出。
修改的檔案如下,其他與之前一樣。
createthumb.php
$wait_timeout){ // 超时 exit(); } usleep(300000); // sleep 300 ms } if(file_exists($dest)){ // 图片生成成功 ob_clean(); header('content-type:'.mime_content_type($dest)); exit(file_get_contents($dest)); }else{ exit(); // 生成失败退出 } } // 创建缩略图 $obj = new PicThumb($logfile); $obj->set_config($config); $create_flag = $obj->create_thumb($source, $dest); unlink($processing_flag); // 删除处理中标记文件 if($create_flag){ // 判断是否生成成功 ob_clean(); header('content-type:'.mime_content_type($dest)); exit(file_get_contents($dest)); } ?>
本篇文章講解如何讓php 根據url自動產生縮圖,並處理高並發問題,更多相關問題請關注php中文網。
相關建議:
#以上是如何讓php 根據url自動產生縮圖,並處理高並發問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!