ui设计的网站,建设申请网站,网站首页模板自定义,网站为什么被百度k了背景
近期发现#xff0c;网站上的部分图片无法显示#xff0c; 分析发现#xff0c;是因为引用的第三方网站图片#xff08;第三方服务器证书已过期#xff09; 想着以后显示的方便 直接抓取第三方服务器图片#xff0c;转存到本地服务器 思路 1. 查询数据表#xff0…背景
近期发现网站上的部分图片无法显示 分析发现是因为引用的第三方网站图片第三方服务器证书已过期 想着以后显示的方便 直接抓取第三方服务器图片转存到本地服务器 思路 1. 查询数据表确认待转存的图片链接2. 代码抓取图片转存到本地服务器的一个指定目录中3. 使用 redis 集合存储已操作的图片链接避免后续重复抓取4. 更改数据表 存储记录替换链接代码参考
以链接https://pic2.zhimg.com/gift/v2-8d3f288feae0e511dee5c3d6735ca999_r.jpg 为例 /*** notes:图片抓取代码* param string $url* throws \GuzzleHttp\Exception\GuzzleException* author: zhanghj* Time: 2024/10/28 10:00*/public function grabImages($url ){$start_str https://;$file_name explode(/gift/,$url)[1]??;if (strpos($url,$start_str)0){//查询是否已存在$redis_key mz_uu_b1b_images;$isMember Redis::sIsMember($redis_key,$file_name);if ($isMember){logger()-warning(已存在.$file_name);}else{$_set [verify false, http_errors false];$client new Client($_set);$response $client-get($url);$contents $response-getBody()-getContents();$localPath uub1b/{$file_name}; // 假设下载的图片都是JPEG格式Storage::put($localPath, $contents);Redis::sAdd($redis_key,$file_name);logger()-warning(已抓取.$url);}}//echo Image downloaded successfully!;}数据表记录替换更新
参考 mysql 执行语句如下
UPDATE cms_igoods
SET img CASEWHEN INSTR(img, https://xx.mix.com/pointshopproduct/gift) 0 THEN REPLACE(img, https://xx.mix.com/pointshopproduct/gift, uub1b_img)ELSE img
END
WHERE integralgoodid 0;