отправитель сообщения php с задержкой

Этот код извлекает идентификаторы пользователя из моей базы данных и отправляет им сообщение. Проблема в том, что вы пытаетесь отправить сообщение всем пользователям одновременно, а мой db идет вниз. Я получаю сообщение об ошибке, если я отправлю его многим пользователям. Может ли кто-нибудь помочь мне отправить сообщение 1 пользователю или 2 в то время и, возможно, несколько секунд задержать betwen сообщения?

$result = mysql_query("
        SELECT
            *
        FROM
            offline_access_users
    ");

    if($result){
        while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
            $msg['access_token'] = $row['access_token'];
            try {
                $facebook->api('/me/feed', 'POST', $msg);
                $output .= "

Posting message on '". $row['name'] . "' wall success

"; } catch (FacebookApiException $e) { $output .= "

Posting message on '". $row['name'] . "' wall failed

"; } } }
0
nl ja de

2 ответы

Попробуйте под кодом:

$offset = 0; //Starting Point
$limit = 2;  //Number of records to work with per loop
while(1)
{
    $result = mysql_query("
        SELECT * FROM offline_access_users LIMIT $offset,$limit
    ");

    if($result){
        while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
            $msg['access_token'] = $row['access_token'];
            try {
            $facebook->api('/me/feed', 'POST', $msg);
            $output .= "

Posting message on '". $row['name'] . "' wall success

"; } catch (FacebookApiException $e) { $output .= "

Posting message on '". $row['name'] . "' wall failed

"; } } } else break; $offset = $offset + $limit; }
1
добавлено
Это делает то же самое и не решает проблему, так как это не добавляет задержки между отправкой сообщений. Концепция также ошибочна, потому что даже если вы добавили sleep , сценарий должен работать постоянно, но большую часть времени он будет ждать завершения sleep .
добавлено автор Vlad Preda, источник

Вам нужно немного подумать об этом.

Во-первых, вам нужно сделать это в cronjob , который будет запускаться, например, каждые 5 минут.

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

Затем вам нужно ограничить количество пользователей за один проход.

// replace MySQL with mysqli or PDO !!!
$result = mysqli_query($link, "
        SELECT *
        FROM offline_access_users
        ORDER BY message_sent_date ASC
        LIMIT 5
    ");//this takes the 5 users that received messages the longest time ago

Затем внутри цикла while выполните этот запрос (в блоке try).

$updateQuery = "UPDATE offline_access_users SET message_sent_date = CURRENT_TIMESTAMP WHERE id = {$row[id]}";

Должно быть, дайте мне знать, как это происходит.

Результат

Этот скрипт будет запускаться каждые 5 минут и выберите 5 пользователей, которые не получили сообщение (логика здесь зависит от того, что вам нужно, так что вы должны быть немного понятнее).

0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp