Answer the question
In order to leave comments, you need to log in
PHP caching?
День добрый Помогите найти проблему с кэшем.
<?php
$id_kp = '123456';
$id = '999';
$token='xxx';
$cache_time = 5;
$cache_date = "cache/$id_kp-date.txt";
$servername="localhost";
$username="test";
$password="test";
$dbname="test";
// проверка наличия файла, если время жизни норм. то выводим содержимое
if (file_exists($cache_date)) {
if ((time() - $cache_time) < filemtime($cache_date)) {
echo file_get_contents($cache_date);
exit;
}
}
// Если время вышло или кеша нет то запрашиваем и сохраняем
$json=json_decode(file_get_contents("http://moonwalk.cc/api/videos.json?kinopoisk_id=$id_kp&api_token=$token"));
foreach($json as $item){
$dates[]=$item->last_episode_time;
}
rsort($dates);
$date=array_shift($dates);
file_put_contents($cache_date,$date);
// Вот здесь проблема, как сделать так если содержимое кеша = $date то БД не трогаем, если не равно то пишем.
$cache='';
if(file_exists($cache_date)){
$cache=file_get_contents($cache_date);
} if($cache!=$url){
file_put_contents($cache_date,$date);
$conn=mysqli_connect($servername,$username,$password,$dbname);
if(!$conn){
die("Connection failed: ".mysqli_connect_error());
}
$sql="UPDATE dle_post SET date='$date' WHERE id=$id";if(mysqli_query($conn,$sql)){echo "good";}else {echo "bad";}
mysqli_close($conn);
}
?>
В php новичек, особо не ругайтесь на говнокод. Если кто поможет, буду очень признателен!
Answer the question
In order to leave comments, you need to log in
PHP started learning about 3 days ago, so I still don’t understand much,
if you remove the first one, file_put_contents($cache_date,$date);
it is $cache_time
ignored, and there is always a json request
if you substitute $date in the place of $ url,
$cache='';
if(file_exists($cache_date)){
$cache=file_get_contents($cache_date);
} if($cache!=$date){
file_put_contents($cache_date,$date);
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question