Задать вопрос

Как сделать поочередны вывод из MySQL?

Доброго всем! В общем беда такая. Нужно вывести записи из БД и оправить на сторонни сервер поочередно все эти данные. т.е. в БД к примеру есть 500 номеров и нужно каждый номер передать на сервер по одному. если это сделать так:
$res = mysql_result(mysql_query("SELECT COUNT(*) FROM `". input($pages) ."` ". $sql_where .""), 0);
					if ($res > 0) {
					$req = mysql_query("SELECT * FROM `". input($pages) ."` ". $sql_where ."");
					// URL для запроса POST /message
$token = 'token ';
$instanceId = '123';
$url = 'https://sitе.com/instance'.$instanceId.'/message?token='.$token;
					while ($data_req = mysql_fetch_assoc($req)) {
						
		$string = str_replace("+7","",$data_req[$data_tel_res]);	
	$string = str_replace("(","",$string);	
	$string = str_replace(")","",$string);	
	$string = str_replace("-","",$string);	
	$string = str_replace(" ","",$string);
	$string = substr_replace($string, '', 0, 1);
				# echo $string .'<br/>';
					$data = [
    'phone' => '7'. $string, // Телефон получателя
    'body' => $text, // Сообщение
];
$json = json_encode($data); // Закодируем данные в JSON
// Сформируем контекст обычного POST-запроса
$options = stream_context_create(['http' => [
        'method'  => 'POST',
        'header'  => 'Content-type: application/json',
        'content' => $json
    ]
]);
// Отправим запрос
$result = file_get_contents($url, false, $options);

					}
					
					if ($result) {
						
						$error_404 = 'Отправленно '. $res .' сообщений!<br/>';
					} else {
						$error_404 = 'Ошибка отправки '. $res .' сообщений!<br/>';
					}
					
					} else {$error_404 = 'На странице '. $pages .' нет номеров!<br/>';}

то при выборке в 100 записей, сат виснет и бывает выдает ошибку по времени.
Можно как то это сделать по очередно или синхронно(асинхронно или как там правильно).может есть где библиотека с js? видел такое в PHPMailer, там при отправке выходит окно и через js сколько отправлено и в очереди и отправляется. плюс можно паузы ставить по кнопке. вот хотелось бы что то такое с этим кодом старым кодом придумать.
  • Вопрос задан
  • 214 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
@dzmitryIhnatau
Backend php developer
Тут тебе в помощь ajax.
Логика такая:
Сначала получаешь количество всех записей в базе. Потом порционно отправляешь это все через ajax при этом используя в sql запросе LIMIT. Попробуй для начала отправлять по 20 записей за раз.
Ответ написан
ddv88
@ddv88
Binance Futures
array_chunk
foreach
curl
wait for 200
sleep
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Вариантов масса, самое простое что приходит в голову - запускать скрипт из консоли, там ограничения по времени отсутствуют и можно отправлять сколько влезет.
Второй вариант может не подходить или не предусмотрен принимающим сервером. Запрос похож на вызов апи, скорее всего в нем есть возможность принимать сразу несколько значений в определенном формате, но это не точно...
Третий вариант - увеличить максимальное время работы скрипта через ини_сет.
Ну и еще куча вариантов: мультикурл, раббитМКЮ, отправка по крону...
Ответ написан
Ваш ответ на вопрос

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

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