나는 현재 컬을 사용하는 스크립트를 사용하여 사용자가 페이지를 방문 할 때마다 약 3000 개의 이미지 파일 크기를 확인합니다. 이는 내용이 변경 될 때마다 발생하기 때문입니다.PHP는 원격 이미지 파일 크기를 약 3000 번 확인하기 위해 컬링보다 빠릅니다.
7442 바이트의 크기와 일치하면 이미지의 경로가 변경되고 그렇지 않으면 원본을 유지합니다.
이미지 URL은 $ variable, mysql 및 원격 xml 파일과 로컬 xml 파일에 저장됩니다. 그러나 이미지 iself는 항상 원격으로 저장됩니다.
$image = 'http://remoteserver.com/user22.jpg';
//Check if all thumbs are ok real and available
$ch = curl_init($image);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
$data = curl_exec($ch);
$size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
if($size == 7442){
echo '<img src="https://www.newdomain.com/tmp.jpg" height="190.11"/></a>';
} else {
echo '<img src="' . $image . '" alt="' . $user . '" /></a>';
}
활성화되면 페이지를로드하는 데 약 40 초가 걸리고 주석 처리가 완료되면 3 초가 걸립니다. 그러나 모든 사용자가 웹 페이지를 방문 할 때마다 실행되거나, mysql에 데이터를 추가하고 mysql에서 주소를 변경하기 전에 컬을 실행하면 해당 정보가 mysql에로드되어 모든 이미지가 표시되지 않습니다.
이 체크, 서버 응답 시간, PHP 설정 등에 따라 많은 것들이 있습니다.하지만이 이미지 파일 검사가 실제로 필요하며 40 초의로드 시간을 가질 여유가 없습니다 사용자가 페이지를 방문 할 때마다
의견이나 도움이 필요하십니까? 감사합니다.
웹 요청의 일부가 아닌 백그라운드 프로세스로 실행하십시오. –
memcache 또는 무언가를 사용하여 이미지 URL 재 라우팅 집합을 저장할 수 있습니다. 예약 된 백그라운드 서비스 (PHP 스크립트)가 주기적으로 실행되어 파일 크기를 확인하고 다시 라우팅 된 URL을 memcache에 추가 할 수 있습니다. memcache를 검색하고 발견 된 키를 반환하거나 그렇지 않은 경우 원본 URL을 반환하는 함수의 이미지 URL을 얻습니다. – jcorry
Mark Baker와 Jcorry에게 감사드립니다. 원래의 url은 실제로는 mysql에 저장되지만 url 만, 크기 정보는 저장되지 않습니다. 그건 memcache의 필요성을 없애 줍니까? –