Последние записи
Работая над проектами не на Битриксе иногда нужно обеспечить кеширование тех или иных данных не прибегая к работе с MySQL. В этом нам может помочь библиотека phpfastcache
Ставим композер через ssh
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Ставим библиотеку phpfastcache
composer require phpfastcache/phpfastcache
Ознакомиться с самой библиотекой можно здесь
Создаем в любом удобном месте папку cache
где будут храниться наши временные файлы. Ставим на нее права 755
Собственно код
require __DIR__ . '/../../../vendor/autoload.php';
use Phpfastcache\CacheManager;
use Phpfastcache\Config\Config;
use Phpfastcache\Core\phpFastCache;
// Setup File Path on your config files
CacheManager::setDefaultConfig(new Config([
"path" => __DIR__.'/cache',
"itemDetailedDate" => false
]));
function getVideoData($link) {
$InstanceCache = CacheManager::getInstance('files');
$CachedString = $InstanceCache->getItem(str_ireplace(array(':','/','?'),'', $link));
if (is_null($CachedString->get())) {
$result = wp_remote_get($link.'/?utm_source=ig_web_copy_link&__a=1');
$result = json_decode( wp_remote_retrieve_body( $result ) );
$url = $result->graphql->shortcode_media->video_url;
if($url){
$CachedString->set($url)->expiresAfter(11800*4*12);//in seconds, also accepts Datetime
$InstanceCache->save($CachedString); // Save the cache item just like you do with doctrine and entities
}
}
if(!empty($CachedString->get())){
return $CachedString->get();
}
}
$videoSRC = getVideoData($item->link);
Комментарии