Рассылка (опять :()

Jon

Новичок
Рассылка (опять :()

Подскажите плиииз, пытаюсь реализовать рассылку новостей пользователям в базе. Делаю следующее.

- Есть база "subscribe" подписчиков (mail_id | mail_id | subscribe)
- Есть база "news" с новостями

1. Проверяю есть ли свежие новости
2. Если есть новости то запускаю скрипт который отправляет письмо и меняет subscribe=1

Делаю через CURL, подскажите что не правильно(

$id_news - ID новостей новых (1,2,33,44);

PHP:
function subscribe($config,$id_news) {
            $url = $config['url']."mail.php?id_news=".$id_news;
            $ch = curl_init();  
            
            curl_setopt($ch, CURLOPT_URL,$url); 
            curl_setopt($ch, CURLOPT_TIMEOUT, 5);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
            $result = curl_exec($ch);
            curl_close($ch);
            
            if ($result!=0) subscribe($config,$id_news);            
        }
В базе около 2-3тыс. ядресов.
 

Exillon

Новичок
Ну во первых не правильно то что функция вызывает саму себя, + на бесконечный цикл похоже, если результат будет всегда, и скрипт отвалится.
Во вторых я так и не понял для чего тебе курл использовать? чтобы запрос отправить удаленному скрипту ? или локальному?
Ну и еще функция ничего не возвращает в ответ.
 

Jon

Новичок
не, у меня mail.php проверяет по базе, есть ли в базе еще subscribe=0, если нету то отдает 0.
 

Exillon

Новичок
Тут можно было и этим обойтись, если нужен ответ удаленного скрипта. http://php.net/manual/en/function.file-get-contents.php
Если он на самом деле удаленный...
Если нет, то зачем это делается все в разных скриптах?.
 

Jon

Новичок
Exillon
есть предложения как сделать рассылку не убив сервер.?

а в разных сделал, только по тому что в главном не только рассылка а чиска всяких логов сайта. эт через cron запускается
 

Exillon

Новичок
А что тут сложного? сделай только один скрипт, который считает сначала новые новости, сгенерирует тело письма, потом считай с БД список подписчиков , и в массиве разошли всем функцией майл.
 

Jon

Новичок
если рассылать все разом массивом то нужно таймаут отключать. а он максимум 30 секунд
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
"аффтар выпей йаду" (С)

Jon, расылку надо делать специальными программами для рассылок (Mailman и подобные). Они работают фоном. Для этого нужен выделенный сервер или VPS и админ. Ты сам этого не сделаешь.

рекурсивно циклом через curl вызывать другой скрипт нельзя. никак. никогда.
у тебя segmentation faul будет просто по заполнению стека вызовов
подумай о смене профессии
 

Jon

Новичок
Автор оригинала: grigori
"аффтар выпей йаду" (С)

Jon, расылку надо делать специальными программами для рассылок (Mailman и подобные). Они работают фоном. Для этого нужен выделенный сервер или VPS и админ. Ты сам этого не сделаешь.

рекурсивно циклом через curl вызывать другой скрипт нельзя. никак. никогда.
у тебя segmentation faul будет просто по заполнению стека вызовов
подумай о смене профессии
понял, будем копатся, зачем же сразу йаду, все же учатся :)
 
Сверху