Используя PHP, я извлекаю фиды из социальных сетей, таких как Facebook и Twitter, в виде данных JSON. Я написал скрипт, который временно хранит эти данные JSON в файле кэша. Я использую этот скрипт в задании cron, которое периодически проверяет серверы социальных сетей.
Идея состоит в том, чтобы обновлять файл кэша только при обнаружении изменения между текущими данными JSON, извлеченными с сервера, и данными JSON, которые были сохранены в файле кэша.
Однако, с помощью приведенного ниже сценария, после первоначального запуска я не могу эффективно сравнить живой поток данных JSON с сохраненным, в результате чего сценарий выполняет запись в файл кэша каждый цикл независимо от условий:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/cocacola');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$fb_json = curl_exec($ch);
curl_close($ch);
if(file_exists('caches/fb_feed.json')){
$fb_cached_json = unserialize(file_get_contents('caches/fb_feed.json'));
}else{
if($fb_json){
file_put_contents('caches/fb_feed.json', serialize($fb_json));
}
}
// these condition don't work
if($fb_json === $fb_cached_json){
echo 'No changes needed...cache file not updated.';
}else if($fb_json){
file_put_contents('caches/fb_feed.json', serialize($fb_json));
echo 'Cache file updated successfully!';
}else{
echo 'Houston, we have a problem!';
}
Любое понимание будет оценено. Заранее спасибо!