= self::$cache_life) { Run::Summon( [ 'Cache_image', $url, $path ] ); return false; } else { return ((filesize($path)) ? true : false); } } // Cache_image invokes url_to_cache() as a background task Run::Summon( [ 'Cache_image', $url, $path ] ); return false; } static function url_to_cache($url,$file) { $fp = fopen($file,'wb'); if (! $fp) { logger('failed to open storage file: ' . $file,LOGGER_NORMAL,LOG_ERR); return false; } // don't check certs, and since we're running in the background, // allow a two-minute timeout rather than the default one minute. // This is a compromise. We want to cache all the slow sites we can, // but don't want to rack up too many processes doing so. $redirects = 0; $x = z_fetch_url($url,true,$redirects,[ 'filep' => $fp, 'novalidate' => true, 'timeout' => 120 ]); fclose($fp); if ($x['success'] && file_exists($file)) { $i = @getimagesize($file); if ($i && $i[2]) { // looking for non-zero imagetype Run::Summon( [ 'CacheThumb' , basename($file) ] ); return true; } } // We could not cache the image for some reason. Leave an empty file here // to provide a record of the attempt. We'll use this as a flag to avoid // doing it again repeatedly. file_put_contents($file, EMPTY_STR); logger('cache failed from ' . $url); return false; } }