MySQL Forums
Forum List  »  Russian

Проблема с передачей данных на удаленных сервер
Posted by: Norest Bebest
Date: September 05, 2014 11:57AM

Суть проблемы:

На удаленных сервер перестали поступать данные c mysql после увеличения объема этих самых данных

Описание:

С локального сервера установлен ssh туннель на 3306 порт на удаленный сервер.

Коннект к mysql удаленного сервера идет php скриптом

$dbh = mysql_connect("127.0.0.1:3306", $user, $pswd) (3306 пробрасывается на удаленный сервер)

Запрос такого типа:

$QS="select * from `http` where work=1 union select * from `http` where work=0 and wasgood>0 ";
$result = mysql_query($QS);

Скрипт сначала получает количество результатов в ответе (например 10.000), потом делит их на
10, т.е. получает 1000 и передает их в потоки

$threads->newThread('./ping.php', array('thread_id' => $j,'count' => $ct))
где

т.е. каждый поток получает цифру 1000 и 10 потоков запрашивают

$j=0;
for ($i=0;$i<$thread_nums;$i++) {
sleep(1);
$threads->newThread('./ping.php', array('thread_id' => $j,'count' => $ct));
print "New thread: $j\n";
$j=$j+$ct;

}

Если сказать проще, то 10 потоков делят количество данных из базы на 10 и каждый обрабатывает свой участок выборки (скажем по 1000 результатов)

$QS="select * from `http` where work=1 union select * from `http` where work=0 and wasgood>0 ORDER by id LIMIT $thread_id,$cnt ";


В результате все работало когда строк было до 10000 , каждый поток брал до 1000 результатов, обрабатывал и возвращал результат, все было нормально.

Но когда результат вырос за 10.000, потоки начали вылетать с ошибкой, как я понял -
слишком большой объем данных.

Для теста запускал этот же скрипт локально на том сервере, где стоит mysql -
все работает. Запрос этих же данных удаленно - ошибка (ругается на получение нулевых данных):

PHP Notice: Undefined offset: 0 in /var/ib/ctest/ping/threads.php on line 45
PHP Warning: stream_get_contents() expects parameter 1 to be resource, null given in /var/ib/ctest/ping/threads.php on line 45
PHP Warning: feof() expects parameter 1 to be resource, boolean given in /var/ib/ctest/ping/threads.php on line 46
PHP Warning: Division by zero in /var/ib/ctest/ping/pinghttp.php on line 69
PHP Warning: Division by zero in /var/ib/ctest/ping/pinghttp.php on line 71

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

Options: ReplyQuote


Subject
Views
Written By
Posted
Проблема с передачей данных на удаленных сервер
2580
September 05, 2014 11:57AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.