Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не до кнца работает скрипт...

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
riv
Отправлено: 23 Декабря, 2011 - 10:11:14
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Сент. 2011  
Откуда: Краснодар


Помог: 0 раз(а)




Есть в движке рассылка e-mail.
Таблица БД в которой находится база из 40 000 адресов.

Это кусок кода который непосредственно обрабатывает и выводит на экран на какие адреса отправились письма.

PHP:
скопировать код в буфер обмена
  1. if(!empty($per3) && $per3=="yes"){
  2. echo "<tr><td colspan=5><h3>"._MLOPT3_."</h3></td></tr>\n";
  3.         $sqdd=mysql_query("select ml_mail,ml_charset,ml_tip from ".$pref."maillist_list WHERE ml_act>0");
  4.         while($row = MYSQL_FETCH_ARRAY($sqdd)){
  5.                 $row['user_name']=$row['ml_mail'];
  6.                 $subject=str_replace("&nbsp;"," ",strip_tags(str_zamena(_MAIL_SUBJECT_)));
  7.                 $textbodyS = str_zamena($textbody);
  8.                 $textplain= str_replace("&nbsp;"," ",strip_tags(str_replace("<br>","\n",str_zamena($header))))."\n\n".
  9.                                         strip_tags(str_zamena(stripslashes($per5)))."\n\n".
  10.                                         str_replace("&nbsp;"," ",strip_tags(str_replace("<br>","\n",str_zamena($footer))));
  11.                 if ($per8==1)$row['user_current03']='text/html';
  12.                 elseif ($per8==2)$row['user_current03']='text/plain';
  13. #               $textbodyS=str_replace("=","=3D",$textbodyS);
  14.                  if($row['ml_tip']=='text/html'){
  15.                         $mail_type=$psval['mail_type']=1;
  16.                 $psval['mail_charset']=$row['ml_charset'];
  17.                     $text="<HTML><meta http-equiv=\"Content-Type\" content=\"text/html; charset=$psval[mail_charset]\">".
  18.                     "$psval[maillist_css]<BODY>\n";
  19.                 $text.=$textbodyS;
  20.          } else {
  21.                 $mail_type=$psval['mail_type']=0;
  22.                 $text=$textplain;
  23.                 }
  24.  
  25.                         $otvet=_mail($row['ml_mail'],$subject,$text,$portal_mail);
  26.                         if($otvet)mysql_query("UPDATE ".$pref."maillist_list SET ml_act=ml_act+1 WHERE ml_mail='$row[ml_mail]'");
  27.                         $dd++;$iclass = ($dd % 2) ? "even" : "odd";
  28.                         $nowsek = date("i:s",time());
  29.                         echo "<tr class=$iclass><td>$dd</td><td>$row[ml_mail]</td><td><td>$otvet</td></td><td>$nowsek</td></tr>\n";
  30.                 }
  31.         }
  32.  


Происходит вывод что было в письме а потом просто список адресов и в какое время были разосланы письма.

В общем браузер перестает грузиться примерно на выводе 4000 адреса не виснет.
Что может быть?
Связано ли это как то с ограничением времени в php.ini?
И что можно предпринять чтоб он мог разослать на все мыла имеющиеся в БД?
Или просто уменьшить кол-во адресов Улыбка

Конечно я мог что то не правильно сформулировать... Улыбка
 
 Top
Viper
Отправлено: 23 Декабря, 2011 - 10:45:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




riv обычно такое огромное кол-во данных не выводят все сразу а делят на куски и используют постраничную навигацию.

Представьте что браузер загружает html-код весом в 300 мб. Сколько времени уйдет на вывод и сколько памяти будет сожрано на сервере и клиенте!?


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
riv
Отправлено: 23 Декабря, 2011 - 10:50:11
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Сент. 2011  
Откуда: Краснодар


Помог: 0 раз(а)




А если вообще убрать вывод (удалить строку 29) работать будет?
(Добавление)
Я вот сейчас попробывал закомментил строку 29 бэкапнул все мыла с базы и удалил добавил туда 3 адреса и запустил скрипт...
Вроде работает но письмо пришло на 2 адреса из 3х
(Добавление)
а вот как будет с 1000 - 3000 - 20000 и т.д.
 
 Top
PATCH
Отправлено: 23 Декабря, 2011 - 12:11:33
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




помойму не в загрузке странице дело) а в том что поумолчанию php код обрабатывается 30секунд ) set_time_limit(время в секундах ) я грузил таким способом (не помню или в Php файле указывал или в php.ini капался) но скрипт у меня сутками выполнял действие в цикле) правдо потом загрузка ресурсов ЭВМ было ппц)
 
 Top
riv
Отправлено: 23 Декабря, 2011 - 13:26:36
Post Id



Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Сент. 2011  
Откуда: Краснодар


Помог: 0 раз(а)




А если я сделаю с постраничным выводом допустим так:

PHP:
скопировать код в буфер обмена
  1.  
  2. if(!empty($per3) && $per3=="yes"){
  3. echo "<tr><td colspan=5><h3>"._MLOPT3_."</h3></td></tr>\n";
  4.  
  5. //*****постраничный вывод
  6.  
  7. $kiku_na_list=500;
  8.         $results = MYSQL_QUERY("select ml_mail,ml_charset,ml_tip from ".$pref."maillist_list WHERE ml_act>0");
  9.         $numbers=MYSQL_NUM_ROWS($results);
  10.         if(empty($page)){
  11.                 $list="0";
  12.                 $page=1;
  13.         } else{
  14.                 $list=($page - 1) * $kiku_na_list;
  15.         }
  16.         $pages = ceil($numbers / $kiku_na_list);
  17.  
  18. if($numbers>$kiku_na_list){
  19. echo "<center>";
  20.  
  21.   for($i = 1; $i <= $pages; $i++)
  22.   {
  23.     if($i != $page){print "  «<a href=".$portal_subdir."/............&page=".$i."$link>".$i."</a>»";}
  24.     else{print ' «<big>'.$i. '</big>»';}
  25.   }
  26.  
  27.   print "</center>";
  28. }
  29.  
  30. //*****
  31.  
  32.         $sqdd=mysql_query("select ml_mail,ml_charset,ml_tip from ".$pref."maillist_list WHERE ml_act>0  LIMIT $list, $kiku_na_list");
  33.         while($row = MYSQL_FETCH_ARRAY($sqdd)){
  34.                 $row['user_name']=$row['ml_mail'];
  35.                 $subject=str_replace("&nbsp;"," ",strip_tags(str_zamena(_MAIL_SUBJECT_)));
  36.                 $textbodyS = str_zamena($textbody);
  37.                 $textplain= str_replace("&nbsp;"," ",strip_tags(str_replace("<br>","\n",str_zamena($header))))."\n\n".
  38.                                         strip_tags(str_zamena(stripslashes($per5)))."\n\n".
  39.                                         str_replace("&nbsp;"," ",strip_tags(str_replace("<br>","\n",str_zamena($footer))));
  40.                 if ($per8==1)$row['user_current03']='text/html';
  41.                 elseif ($per8==2)$row['user_current03']='text/plain';
  42. #               $textbodyS=str_replace("=","=3D",$textbodyS);
  43.                  if($row['ml_tip']=='text/html'){
  44.                         $mail_type=$psval['mail_type']=1;
  45.                 $psval['mail_charset']=$row['ml_charset'];
  46.                     $text="<HTML><meta http-equiv=\"Content-Type\" content=\"text/html; charset=$psval[mail_charset]\">".
  47.                     "$psval[maillist_css]<BODY>\n";
  48.                 $text.=$textbodyS;
  49.          } else {
  50.                 $mail_type=$psval['mail_type']=0;
  51.                 $text=$textplain;
  52.                 }
  53.  
  54.                         $otvet=_mail($row['ml_mail'],$subject,$text,$portal_mail);
  55.                         if($otvet)mysql_query("UPDATE ".$pref."maillist_list SET ml_act=ml_act+1 WHERE ml_mail='$row[ml_mail]'");
  56.                         $dd++;$iclass = ($dd % 2) ? "even" : "odd";
  57.                         $nowsek = date("i:s",time());
  58.                         echo "<tr class=$iclass><td>$dd</td><td>$row[ml_mail]</td><td><td>$otvet</td></td><td>$nowsek</td></tr>\n";
  59.                 }
  60.         }
  61.  


Будут ли у меня отправляться письма на последующие мыла? при открытии страници.
Например:

Нажимаю отправить, скрипт отправляет на первые 500 майлов жму на стр. 2 отпровляет на след 500 и т.д.

(Отредактировано автором: 23 Декабря, 2011 - 13:36:52)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB