powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP Говнокод, извернуться и всунуть код js (ajax) в php
7 сообщений из 7, страница 1 из 1
PHP Говнокод, извернуться и всунуть код js (ajax) в php
    #38798382
Nick-name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
краткая история: Код который я сейчас разбираю был написан двумя разработчиками назад, так что на вопрос зачем сделали так? Я ответить не смогу.

Суть вопроса: Есть некое подобие контроллера, в этом адском месеве есть кусок который отвечает за рассылку. вот этот кусок
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
// в цикле дергается вот эта шутка

    while(){
          //тут всякие ужасы
          $result = $mail->send(array($d["email"]));
          }

// и иногда в $result возвращается либо ошибка либо вообще ничего не возвращается
// поле цикла идёт вот такая штука

die("<a href=\"./?type=mod&mod_id=2&t=m&a=p&id=$id&num=$num&s=".($s+$i)."\">Продолжить</a>
	<script>
		function redir() {
			document.location.href=\"./?type=mod&mod_id=2&t=m&a=p&id=".$id."&num=".$num."&s=".($s+$i)."\";
	}
	setTimeout('redir()', 2000);
</script>");
// если произошла ошибка само перезапускаестя, если ничего не пришло вручную нужно запускать




Вот что нужно: Сделать в этом же файлике функцию, с ajax кодом которая бы следила за тем вернулось что-то вообще или нет, если нет то автоматом должна перезапускать рассылку.
Собственно сам вопрос как запихать в этот php файлик, js код, чтоб он следил за рассылкой до конца?
Фуф, вроде как то так
...
Рейтинг: 0 / 0
PHP Говнокод, извернуться и всунуть код js (ajax) в php
    #38798393
Nick-name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick-name,
И ещё нюанс, весь этот php разделён не функциями а вот такими ифами
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
       if($a=='p'){

           //например начинаем рассылку

       }

      if($a=='e'){

        //редактируем чёньть

        }
      // и так почти две тысячи строк
...
Рейтинг: 0 / 0
PHP Говнокод, извернуться и всунуть код js (ajax) в php
    #38798415
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick-name,

вроде аякс тут ни при чем, достаточно проверять состояние $result в цикле, автоматом перезапускать - а как быть с тем што уже отослано? а скрипт для перезапуска у вас вроде как уже в die прописан, видимо нужно его просто вызвать в зависимости
от состояния $result

мы лично рассылку делали не так, при нажатии пользователем отправить, список пишется в базу с состоянием не отправлено, кроном периодически проверяется состояние нужной таблички, если есть неотправленные - отправляется нужная порция, для этой порции изменяется состояние, пользователь занимается своими делами, если хочет посмотреть состояние рассылки - обновляет нужную страничку с результатами рассылки, где отображается состояние, при ошибках при отправке - можно повторить отправку конкретного пиьсма пару-тройку раз, или сразу записать ошибку в состояние - дальше глазками ответственный смотрит в чем дело

ну и отрефакторить все это дело вам никто не мешает, если вам это и дальше поддерживать
...
Рейтинг: 0 / 0
PHP Говнокод, извернуться и всунуть код js (ajax) в php
    #38798432
Nick-name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-k2-,
Ну в случае сбоя рассылка должна начинаться с места где её прервали, так что с тем что ушло вроде проблем нет. Меня смущает вероятность сели вообще php скрипт отвалился, ну тоесть вообще ничего не вернул, вот как бы его дёрнуть в этом случае
...
Рейтинг: 0 / 0
PHP Говнокод, извернуться и всунуть код js (ajax) в php
    #38798460
Фотография -k2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick-name,

тут как бы непонятно, что у вас в while проверяется
вас смущает выроятность отваливания php-скрипта, но вы хотите в этот же скрипт вписать
javascript-код, который бы перезапустил этот скрипт? :)
...
Рейтинг: 0 / 0
PHP Говнокод, извернуться и всунуть код js (ajax) в php
    #38799548
Nick-name
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-k2-,

ну на счёт while это пример)))

мне уточнили задачу, оказалось, что нужно по нажатию на кнопку рассылка запускать ajax а уже он будет дергать то, что делает рассылку.

А так да, запуск отвалившегося скрипта самим собой, мне то же показалось невыполнимой задачей))). В итоге всё хорошо закончилось
...
Рейтинг: 0 / 0
PHP Говнокод, извернуться и всунуть код js (ajax) в php
    #38799591
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick-nameмне уточнили задачу, оказалось, что нужно по нажатию на кнопку рассылка запускать ajax а уже он будет дергать то, что делает рассылку.Вообще, рассылки по-хорошему кроном делают. А веб-странички с кнопочками - для управления хороши, как уже сказал выше уважаемый -k2- .

Nick-nameМеня смущает вероятность сели вообще php скрипт отвалился, ну тоесть вообще ничего не вернул, вот как бы его дёрнуть в этом случаеЗапускайте задание рассылки кроном хоть каждую минуту. Минутой раньше придет письмо, или минутой позже - оно обычно не принципиально. Чтоб не плодить лишние процессы и не создавать путаницу (а скрипт может работать и дольше минуты), необходимо предусмотреть блокировку от повторного выполнения скрипта сразу после запуска (порядка трех строк кода). Этот способ хорош еще и тем, что иногда приходится устанавливать относительно небольшое количество писем в разовом запуске скрипта. Дело в том, что некоторые хостеры ограничивают количество отправляемых писем в час. Если имеем ограничение хостера в 1200 писем/час, а требуется разослать три 5000 писем, то идея с аяксом будет, мягко говоря, совсем несостоятельной.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP Говнокод, извернуться и всунуть код js (ajax) в php
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]