Добрый день всем!
Сегодня я опять со своим вопросом.
У меня есть скрипт, который делает автопосты в VK
$sql_select = "SELECT * FROM `vk_post` WHERE postID != ''";
$query = mysqli_query($mysql,$sql_select) or die("Ошибка тут: " . mysqli_error($mysql));
while( $result = mysqli_fetch_array($query) ){
$date = new DateTime("now");
$dateNextPost = new DateTime($result['date_create']);
$dateNextPost->add(new DateInterval('PT'.$result['posting_interval'].'M'));
$second = $result['posting_interval']*60;
$APID = $result['id'];
if( $dateNextPost < $date ){
echo $result['owner_id'];
echo '<br>';
$owner_id = $result['owner_id'];
$post_id = $result['postID'];
$imageID = $result['img_id'];
$videoID = $result['video_id'];
$message = $result['post_text'];
$sql_select = "SELECT * FROM `users` WHERE `id`=".$result['user_id'];
$query = mysqli_query($mysql,$sql_select) or die("Ошибка: " . mysqli_error($mysql));
$result = mysqli_fetch_array($query);
$access_token = $result['access_token'];
// Удаление старого поста
$request_params = [
'owner_id' => $owner_id,
'post_id' => $post_id,
'access_token' => $access_token
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.vk.com/method/wall.delete');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,
http_build_query($request_params).'&v=6.76');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$wallDelete = curl_exec($ch);
$wallDelete = json_decode($wallDelete,true);
curl_close($ch);
if( $wallDelete['response'] == 1 ){
errors_log('#'.$post_id.'. Запись успешно удалена, создаём новую');
// Создание новой записи
$v = '5.70'; //версия vk api
$params = array(
'owner_id' => $owner_id, // Кому отправляем
'user_id' => $owner_id, // Что отправляем
'message' => $message,
'attachments' => 'photo'.$owner_id.'_'.$imageID.',video'.$owner_id.'_'.$videoID,
'access_token' => $access_token, // access_token можно вбить хардкодом, если работа будет идти из под одного юзера
'v' => '5.70',
);
$url = 'https://api.vk.com/method/wall.post';
// В $result вернется id
$result = file_get_contents($url, false, stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => http_build_query($params)
)
)));
$records=json_decode($result, true);
$newPostID = $records['response']['post_id'];
$sql = "UPDATE `vk_post` SET postID = '{$newPostID}', published = published + 1, date_create = DATE_ADD(date_create, INTERVAL ".$second." SECOND) WHERE postID = '$post_id'";
$query = mysqli_query($mysql, $sql) or die("Ошибка " . mysqli_error($mysql));
}else{
errors_log('#'.$post_id.'. Запись не найдена');
}
}
}
Вроде всё окей, но он делает пост только одному человеку, хотя людей которые подходят по времени около 20.
Функция errors_log:
function errors_log($error){
$path=dirname(__FILE__)."/vk_awto.txt";
if(!file_exists($path))
file_put_contents($path,'');
$f=fopen($path,'a');
fwrite($f,"$error\n");
fclose($f);
}
Не могу понять почему цикл останавливается, может это из-за моего не достаточного знания curl`a