AsviS
@AsviS
начинающий

Как поэтапно добавлять данные в БД?

Добрый день!
Есть код который из БД выбирает все домены, выполняет проверку AlexaRank по доменам и пишет результат в базу:

<?php
ini_set("display_errors",1);
error_reporting(E_ALL);
include ('../inc/conf.php'); // Connect db
 
$q=mysql_query('SELECT * FROM `domain`');
while($post=mysql_fetch_assoc($q)){
//domain list
$id = htmlspecialchars(abs(intval($post['id'])));
$domain_name = htmlspecialchars($post['domain_name']);
 
 
$alexa = simplexml_load_file("http://data.alexa.com/data?cli=10&dat=snbamz&url=$domain_name");
//$localrank = $alexa->SD[1]->COUNTRY["RANK"];
$globalrank = $alexa->SD[1]->POPULARITY["TEXT"];
 
mysql_query("UPDATE `domain`  SET `alexa_rank`='$globalrank' WHERE `domain_name`='$domain_name'");
 
//echo "$id </br>";
}
?>

У меня сейчас 8000 доменов, скрипт их вытягивает и обрабатывает, но после 500-600 скрипт перестает работать с ошибкой: 504 Gateway Time-out, если поставить лимит на 500 то обрабатывает без ошибок. Но постоянно нужно редактировать код и прописывать этот самый лимит:
SELECT * FROM `domain` LIMIT 628,500 и т.д. !
Как можно это автоматизировать? Чтобы сам скрипт поэтапно брал, например, по 200 записей обрабатывал и обновлял в БД, потом следующие и т.д.?
Очень нужна помощь!

#UPDATE: Уже ненужно, сам решил...
  • Вопрос задан
  • 516 просмотров
Решения вопроса 2
Думаю, что данная статья сможет вам помочь.
Ответ написан
AsviS
@AsviS Автор вопроса
начинающий
Уже ненужно, сам решил...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
  1. Открываешь консоль
  2. запукаешь скрипт
  3. ...
  4. профит
Ответ написан
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
  • LIMIT 100
  • Создаёте массив из 100 доменов,
  • для каждого из них асинхронно скачиваете XML (https://github.com/vrana/php-async/blob/master/Cur...)
  • как только скачалась какая-нибудь xml-ка, то сразу в коллбеке парсите её (simplexml_load_string);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы