{% else-1 %}
Обновить | Подписаться | Поднять тему
Чтобы выполнить действие авторизируйтесь или пройдите регистрацию на сайте.
21.
Mobiaaa * Верифицирован 2.73
(16 фев 2016, 23:41) [0/0] [0] [отв] [спам] [под] +1 | -1

Playtox, В крон
перед добавлением очищать таблицу и наполнять заново, если нужно только выводить

22.
Playtox * 1.63
[автор] (17 фев 2016, 02:30) [0/0] [0] [отв] [спам] [под] +1 | -1

Mobiaaa, Помоги, как оптимизировать
$allClan = $api->getClanAmounts()['data']['amount'];

$all = 2776;
$max=20;
$itr=round($all/$max,0, PHP_ROUND_HALF_UP);
for($i=0;$i<$itr;$i++)
{
$pos=$i*$max;
$data=$api->getClans($max,$pos)['data']['clans_data'];//часть данных с $pos позиции
if(!$data)exit('данных нет');
foreach($data as $k=>$v)
{
$clanx = $api->getClanInfo($k)['data']['clan_info'];
mysqli_query($con,"INSERT INTO `clans`.`clan` (`id` ,`idClan` ,`name`,`abbreviation`,`level`,`elo`,`creation_time`,`commander_pid`) VALUES ( NULL , '$k', '$v', '$clanx[abbreviation]', '$clanx[level]', '$clanx[elo]', '$clanx[creation_time]', '$clanx[commander_pid]' );"*;
echo $v ,'</br>';
}

23.
Mobiaaa * Верифицирован 2.73
(17 фев 2016, 04:26) [0/0] [0] [отв] [спам] [под] +1 | -1

Playtox, Собственно Вот и "узкое горлышко" в Вашем первом варианте, у Вас в цикле дёргается ещё один метод
getClanInfo
Который 99% что делает ещё один запрос к удалённому сайту
Следовательно
1 запрос на листинг + 20 запросов getClanInfo
Что явно быстро не выполнится
Из оптимизации, это если getClanInfo поддерживает "мультизапросы" и возможность вытянуть сразу пачку данных ($max)
Остальное всё экономия на спичках


Изм. 1 раз. / Посл. изм.
Mobiaaa * Верифицирован 2.73
(17 фев 2016, 04:27)
24.
Playtox * 1.63
[автор] (17 фев 2016, 15:11) [0/0] [0] [отв] [спам] [под] +1 | -1

Mobiaaa, Нет, getClanInfo не поддерживает мультизапросы,
Просто из за долго выполнения время отведённое на запрос увеличивается и часть данных с API не приходит т.к превышен лимит времени, и я хз что делать

25.
Mobiaaa * Верифицирован 2.73
(17 фев 2016, 15:12) [0/0] [0] [отв] [спам] [под] +1 | -1

Playtox, sleep применить, или данные частями извлекать

26.
Playtox * 1.63
[автор] (17 фев 2016, 15:22) [0/0] [0] [отв] [спам] [под] +1 | -1

Mobiaaa, Покажи как частями можно?

27.
Mobiaaa * Верифицирован 2.73
(17 фев 2016, 15:26) [1/0] [1] [отв] [спам] [под] +1 | -1

Playtox, например при заборе данных не дёргать getClanInfo
А брать данные клана, когда юзер хочет их увидеть (переходит на страницу клана) и при первом запросе (если данных нет в БД) то писать в базу, если данные есть, то сразу с базы выводить

28.
Playtox * 1.63
[автор] (17 фев 2016, 15:30) [0/0] [0] [отв] [спам] [под] +1 | -1

Mobiaaa, Ок попробую так, через sleep не вышло Maximum execution time of 180 seconds exceeded in

29.
Mobiaaa * Верифицирован 2.73
(17 фев 2016, 15:34) [0/0] [0] [отв] [спам] [под] +1 | -1

Playtox, Это я не учитывал
Я ориентировался на VDS/Сервер
При этом cron php вызывается НЕ через URL а прямым вызовом php файла
(php -f /var/www/site/cron.php)
При этом можно поставить на старт крона блокировку (например создание файл cron.lock)
При окончании работы cron удалять файл, а при старте проверять, нет ли блокировки
Таким образом можно исключить тот момент, что будет выполнятся два cron задания
Либо пойти более сложным методом и писать в файл pid запущенного процесса php
При старте проверять есть ли файл блокировки + существует ли в системе pid данный
Но это уже более отказоустойчивый вариант

30.
Playtox * 1.63
[автор] (17 фев 2016, 16:05) [0/0] [0] [отв] [спам] [под] +1 | -1

Mobiaaa, А можно как то импортнуть данные всех кланов через цыкл, у меня вить есть id всех кланов

Чтобы писать сообщения авторизируйтесь или пройдите регистрацию на сайте.
Подписаны: 1
Скачать тему | Файлы темы | Фильтр сообщений