The timing when the server generates thumbnails is generally divided into two types:
1. Generate when uploading files
#Advantages: The required thumbnails are already generated when uploading, and there is no need to judge when reading. , reduce cpu operations.
Disadvantages: When the thumbnail size changes or a new size is added, all thumbnails need to be regenerated.
2. Generate
when accessingAdvantages: 1. It only needs to be generated when a user accesses it. If there is no access, it does not need to be generated, which saves space.
2. When modifying the thumbnail size, you only need to modify the settings without regenerating all thumbnails.
Disadvantages: When thumbnails do not exist and need to be generated, high concurrent access will consume a lot of server resources.
Although there will be high concurrency problems when accessing, other advantages are better than the first method, so you only need to solve the high concurrency problems.
Regarding the principle and implementation of how to automatically generate thumbnails based on url, you can refer to the "php based on url" I wrote before Automatically generate thumbnails.
## High concurrency processing principle:
1. When it is determined that a picture needs to be generated, create a temporary mark file in the tmp/ directory. The file name is named md5 (the file name to be generated), and the temporary file is deleted after the processing is completed.
2. When it is determined that the file to be generated has a temporary mark file in the tmp/ directory, which means that the file is being processed, the generate thumbnail method will not be called, but will wait until the temporary mark file is is deleted, generating a successful output.
The modified files are as follows, others are the same as before.
##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)); } ?>
## The above is how PHP automatically generates thumbnails based on URLs and handles high concurrency issues For more related content, please pay attention to the PHP Chinese website (m.sbmmt.com)!