увеличить скорость рассылки

Slaughter

Новичок
увеличить скорость рассылки

есть новостная рассылка
Вот, задался я такой мыслью: как увеличить скорость у моей рассылки?
хочу попросить помощи.. что надо помнять у меня в скрипте?
PHP:
function mysqlq()
{
  global $n,$arr,$prov_id,$date,$link;
	
  $table="subscribe";
  include("connect.php");
  $query = "SELECT `email` FROM `$table` WHERE `prov_id` = '' ORDER BY `id`";
  $res=mysql_query($query,$link);
  $n=0;
  while ($line = mysql_fetch_array($res)) 
  {
    $arr[$n]=$line[0]; 
    $n++;
  }

  $query = "SELECT `prov_id` FROM `$table` WHERE `prov_id` = '' ORDER BY `id`";
  $res=mysql_query($query,$link);
  $k=0;
  while ($line = mysql_fetch_array($res)) 
  {
    $prov_id[$k]=$line[0]; 
    $k++;
  }

  $query = "SELECT `date` FROM `$table` WHERE `prov_id` = '' ORDER BY `id`";
  $res=mysql_query($query,$link);
  $j=0;
  while ($line = mysql_fetch_array($res)) 
  {
    $date[$j]=$line[0]; 
    $j++;
  }
}

function mswkey()
{
  global $n,$arr,$prov_id,$date,$link;
	
  mysqlq();
  $subject = "Новости с сайта XXXX.ru";
  $headers = "From: XXXX.ru <[email protected]>\r\n";
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .= "Content-type: text/html; charset=windows-1251\r\n";

  for ($i=0; $i<$n; $i++)
  {
    $mailto=mail($arr[$i], $subject, $_POST['mess'], $headers);
  }
  ok();
mysql_close($link);
}

function ok()
{
	echo "OK";
}
и еще, этот файл помимо того, что он рассылает на разные е-майлы новости, он еще выводит, какие е-майлы подписались..
Для доступа есть несколько ссылок, например: для вывода формы, чтобы отослать новость: _http://server/script.php?vib=1
а для того, чтобы посмотреть какие е-майлы подписались: _http://server/script.php?vib=1
и также для рассылки используется: _http://server/script.php

или лучше использовать разные файлы? например, для просмотра и вывода script.php, а для рассылки - mail.php?
большое спасибо.
 

untied

Сдвинутый новичок
Дык вместо 3-х SQL запросов можно один сделать!
 

Slaughter

Новичок
untied
мда....)))

-~{}~ 14.02.05 14:53:

подожди...
а если мне надо обратиться к $arr (как, например, здесь: $mailto=mail($arr[$i], $subject, $_POST['mess'], $headers);), а потом к $prov_id (чтобы его вывести, например, так:
PHP:
for ($i=$n-1; $i>=0; $i--){echo $prov_id[$i].",".$date[$i]}
)....
спасибо.
 

untied

Сдвинутый новичок
Автор, я не разбираюсь в твоих array-ах, ты извини...
Просто SQL-запросы надо минимизировать и объединять (а из твоего кода я понял, что ты выбираешь по одному столбцу за один запрос).
Далее: одно письмо можно рассылать нескольким получателям, перечисляя адреса через ;
Но не всегда этот метод допустим: мне, к примеру, иногда специально давали указание, чтобы одно письмо отправлялось адресату по единственному адресу (типа: персонально).
 

Slaughter

Новичок
мне бы хотелось бы отправлять письма "персонально" (так и отправляется)

PHP:
$query = "SELECT `email` FROM `$table` WHERE `prov_id` = '' ORDER BY `id`"; 
  $res=mysql_query($query,$link); 
  $n=0; 
  while ($line = mysql_fetch_array($res)) 
  { 
    $arr[$n]=$line[0]; 
    $n++; 
  }
- этот код используется для рассылки и для вывода
остальные два:
PHP:
$query = "SELECT `prov_id` FROM `$table` WHERE `prov_id` = '' ORDER BY `id`"; 
  $res=mysql_query($query,$link); 
  $k=0; 
  while ($line = mysql_fetch_array($res)) 
  { 
    $prov_id[$k]=$line[0]; 
    $k++; 
  } 

  $query = "SELECT `date` FROM `$table` WHERE `prov_id` = '' ORDER BY `id`"; 
  $res=mysql_query($query,$link); 
  $j=0; 
  while ($line = mysql_fetch_array($res)) 
  { 
    $date[$j]=$line[0]; 
    $j++; 
  }
- используются только для вывода (просмотр, какие е-майлы подписались)

вот как тут оптимизировать?
а может лучше использовать 2 файла (1 только рассылка, а другой только вывод)?

-~{}~ 14.02.05 15:27:

На много увеличится ли скорость при использовании 2-х файлов (если увеличится)?
 

untied

Сдвинутый новичок
Автор, для начала объясни мне тайный глубинный смысл запроса:

SELECT `prov_id` FROM `$table` WHERE `prov_id` = '' ORDER BY `id`

А потом я тебе напишу, как объединить запрос.

Короче ладно, засиделся я в офисе, пора и домой двигать...
Видимо, автор сам понял порочность данного запроса. Но, исходя из предположения, что ему нужно поступать именно так, запрос объединяется следующим образом:

PHP:
$recset = mysql_query("SELECT email, prov_id, `date` FROM ".$table." WHERE prov_id = '' ORDER BY id");
for ($i = 0; $i < mysql_num_rows($recset); $i++)
{
    list( $email, $prov_id, $date ) = mysql_fetch_row($recset);
    // далее делаем с полученными $email, $prov_id, $date что угодно
    // заносим их в любые массивы
}
 
Сверху