Mysql Server исчезла ошибка на PHP-скрипт - PullRequest
1 голос
/ 21 января 2011

Я написал скрипт для пакетной обработки доменов и получения данных по каждому из них.Для каждого полученного домена он подключается к удаленной странице через curl и извлекает данные, необходимые для 30 доменов одновременно.

Эта страница обычно загружается и возвращает результат скручивания в течение 2-3 минут, при этомточка, детали разбираются и помещаются в массив (функция инструментов рейтинга страницы).

После запуска этого скрипта через CRON, я получаю сообщение об ошибке «Сервер MySQL исчез».

Может кто-нибудь сказать мне, если я упускаю что-то очевидное, что может быть причиной этого?

// script dies after 4 mins in time for next cron to start
set_time_limit(240);

include('../include_prehead.php');

$sql = "SELECT id, url FROM domains WHERE (provider_id = 9 OR provider_id = 10) AND google_page_rank IS NULL LIMIT 30";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);

do {
$url_list[$row['id']] = $row['url'];
} while ($row = mysql_fetch_assoc($result));

// curl domain information page  - typically takes about 3 minutes
$pr = page_rank_tools($url_list);



foreach ($pr AS $p) {
// each domain
if (isset($p['google_page_rank']) && isset($p['alexa_rank']) && isset($p['links_in_yahoo']) && isset($p['links_in_google'])) {

$sql = "UPDATE domains SET google_page_rank = '".$p['google_page_rank']."' , alexa_rank = '".$p['alexa_rank']."' , links_in_yahoo = '".$p['links_in_yahoo']."' , links_in_google = '".$p['links_in_google']."' WHERE id = '".$p['id']."'";


mysql_query($sql) or die(mysql_error());

}
}

Спасибо

CJ

Ответы [ 3 ]

4 голосов
/ 21 января 2011

Это происходит из-за того, что у MySQL-соединения есть свой тайм-аут, и пока вы анализируете свои страницы, все заканчивается. Вы можете попытаться увеличить это время ожидания с помощью

ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);

(как упомянуто в Сервер MySQL исчез - ровно через 60 секунд )

Или просто вызовите mysql_connect () снова.

2 голосов
/ 21 января 2011

Поскольку скручивание занимает слишком много времени, вы можете снова подключить базу данных, прежде чем вводить LOOP для обновления

0 голосов
/ 21 января 2011

Существует много причин, по которым возникает эта ошибка.Посмотрите список здесь, это может быть что-то, что вы можете легко исправить MySQL Server пропал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...