Странная проблема, когда ставлю usleep больше 300000 в одном из циклов - любые запросы к БД через redbean php после такого цикла перестают работать. В чем может быть причина? Провозился 3 часа и ничего не нашел. Только ставлю usleep меньше 300000 - запросы сразу начинают идти отлично.
<?php
//header('Location:/index.php');
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
require_once "config.php";
//Выборка записанных в БД групп и очистка конечного массива от лишнего
$groups = R::findAll('groups');
$array = R::exportAll( $groups );
$groupids = array_column($array, 'group_id');
//Общее количество постов которое должно у нас записаться (15 умноженное на количество групп)
$maxpostscount = 15 * count($groupids);
//Удаляем пустые массивы ID'ов ввведенных групп, перечисляем их через запятую
$new_array = array_diff($groupids, array(''));
$groupids = implode(",", $new_array);
//Получаем точные циферные ID'ы
$query = file_get_contents("https://api.vk.com/method/groups.getById?group_ids=".$groupids."&fields=description&v=5.80&access_token=".$access_token);
$query = json_decode ($query,true);
$query = array_column($query['response'], 'id');
$groupids = $query;
//Получаем список постов, очищаем их, вбиваем нужные элементы массива в их ключи "gifsurl,texts" и тд..
foreach ($groupids as $groupid)
{
$query = file_get_contents("https://api.vk.com/method/wall.get?owner_id=-".$groupid."&count=15&filter=ownerextended=1&v=5.80&offset=1&access_token=".$access_token);
$query = json_decode ($query,true);
$posts[] = $query['response']['items'];
//Если тут ставлю больше 300000 то все запросы к бд после этого цикла перестают работать
usleep(300000);
}
$posts = call_user_func_array('array_merge', $posts); //Убираем лишнюю вложенность
//Вбиваем нужные элементы при помощи цикла в их переменные, элементы взяты из запроса выше
foreach ($posts as $post) {
//Если тут ставлю больше 300000 то все запросы к бд после этого цикла перестают работать
usleep(700000);
$query = file_get_contents("https://api.vk.com/method/likes.getList?type=post&owner_id=".$post['owner_id']."&item_id=".$post['id']."&filter=likes&friends_only=0&extended=0&offset=0&count=1&skip_own=0&v=5.80&access_token=".$access_token);
$query = json_decode ($query,true);
$postsarray[] = array(
"gifsurl" => $post['attachments']['0']['doc']['url'],
"texts" => $post['text'],
"likes_count" => $query['response']['count'],
);
}
//Стоп слова
foreach($postsarray as $key => $value) {
foreach($value as $k => $v) {
if (empty($v) || (preg_match('/http/', $v) && $k == 'text')) {
unset($postsarray[$key]);
}
}
}
//Тестовый запрос к бд
vardump($postsarray);
$postinfo = R::dispense( 'postslist' );
$postinfo->texts = 'hello';
$id = R::store( $postinfo );
?>
Видимо заканчивается время ожидания сервера. Может быть оно задано на сервере mysql (wait_timeout, interactive_timeout).
Возможно задано в свойствах подключения вашего фреймворка
При этом отдает ошибку "MySQL Server Has Gone Away"
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости