Привествую! использую сервис leeloo для отправки уведомлений и сообщений пользователям сайта, которые подписались на воронку. Использую cURL для отправки через API Стоит ограничение - 50 запросов в минуту, и если запросов больше, выдает ошибку. Too many requests, please try again later. Есть несколько функций по отправке PHP: function send_message() { //send message to leeloo API $text = 'text'; $user_data = get_userdata($user_id); $accountId = $user_data->user_login; $token = 'TOKEN'; $link = 'https://api.leeloo.ai/api/v1/messages/send-message'; $Data['text'] = $text; $Data['account_id'] = $accountId; $DataOK = json_encode($Data); $descriptor = curl_init($link); curl_setopt($descriptor, CURLOPT_POSTFIELDS, $DataOK); curl_setopt($descriptor, CURLOPT_RETURNTRANSFER, 1); curl_setopt($descriptor, CURLOPT_HTTPHEADER, array('Content-Type: application/json','X-Leeloo-AuthToken: '.$token)); curl_setopt($descriptor, CURLOPT_CUSTOMREQUEST, 'POST'); $itog = curl_exec($descriptor); $err = curl_error($descriptor); if ($err) { echo "cURL Error #:" . $err; } else { echo $itog; } curl_close($descriptor); return $itog; } send_message(); PHP: function create_order() { //create order //$date = gmdate("Y-m-d H:i:s"); $token = 'TOKEN'; $link = 'https://api.leeloo.ai/api/v1/orders'; //$Data['text'] = $text; $Data['paymentCreditsId'] = 'ORDER ID'; $Data['email'] = 'test@i.ua'; $Data['phone'] = '+380671111111'; $Data['transactionDate'] = gmdate("Y-m-d H:i:s"); $Data['offerId'] = 'OFFER ID'; $Data['accountId'] = 'USER ID'; $Data['isNotifyAccount'] = 'true'; $DataOK = json_encode($Data); $descriptor = curl_init($link); curl_setopt($descriptor, CURLOPT_POSTFIELDS, $DataOK); curl_setopt($descriptor, CURLOPT_RETURNTRANSFER, 1); curl_setopt($descriptor, CURLOPT_HTTPHEADER, array('Content-Type: application/json','X-Leeloo-AuthToken: '. $token)); curl_setopt($descriptor, CURLOPT_CUSTOMREQUEST, 'POST'); $itog = curl_exec($descriptor); $err = curl_error($descriptor); if ($err) { echo "cURL Error #:" . $err; } else { echo $itog; } curl_close($descriptor); return $itog; } create_order(); Ответ, при успешной отправке Код (Javascript): {"data":{},"status":1} Подскажите, как отправить еще раз запрос, если он не был успешно отправлен?
При создании заказа - не пытаться сразу отправлять, а помещать задание в очередь из очереди - по расписанию отправлять определенное кол-во раз при успешной отправке - удалять из очереди, иначе - задача остается в очереди - и будет выполнена в следующий раз + можно счетчик неуспешных попыток (или дату смотреть - не более чес 24 часа) им присобачить и при отказе например 10 раз - оповещать об этом в лог выполнения, а саму задачу удалять из очереди Ну или если совсем по простому PHP: if (send_message() == тут сравнение с неуспешностью отправки) send_message(); или PHP: $res = send_message(); while ( $res == тут сравнение с неуспешностью отправки) { $res = send_message(); } будет отправлять - пока не отправит
тут как раз конструкция do {...} while (); --- Добавлено --- PHP: do { $res = send_message(); } while ( $res === false ); PHP: $itog = curl_exec ( $descriptor ); $err = curl_error ( $descriptor ); if ( $err ) { return false; } curl_close ( $descriptor ); return $itog;
Помогите пожалуйста, мне нужно сделать выборку из двух таблиц и вывести один первый результат <? $iq= mysql_query('SELECT * FROM `inv_mod`,`mod` WHERE `inv_mod.mod_id` = `mod.mod_id` AND `inv_mod.user_id` = "'.$user['id'].'" AND `inv_mod.item_q` = "0" AND `mod.lvl` = "3" AND `mod.tip` = "5" '); $iq = mysql_fetch_array($iq); ?> Мод 3: <?=$id['inv_mod.id']?> Что тут не так?