增强PHP脚本性能

时间:2014-04-19 04:03:40

标签: javascript php web webpage

(这个问题的主题可能与问题不符,但我无法想到更好)我有一个网页,用户提供收件人的电子邮件地址,可以有100个或更多的电子邮件地址;在textarea提供。当然,我必须向所有这些地址发送电子邮件。我有两个方法,但无法确定哪一个可以提供更好的用户体验和性能 方法1:我遍历我的js中的所有电子邮件,并向php脚本发送ajax请求。但是那时会有100个请求到服务器,如果用户关闭浏览器,所有的电子邮件地址都不会通过

方法2:我将所有100个电子邮件地址一次性发送到php脚本,让php脚本循环通过电子邮件。我假设我能够在每个循环计数后用一个成功消息回复一些mesg回到客户端,即使客户端已经死了,那么至少php将继续执行直到循环结束

有人可以为我提供这两种方法的缺点和优点

1 个答案:

答案 0 :(得分:1)

以下是关于如何实现队列的想法。

define('MAX_EMAIL_BUFFER_SIZE', 15);

// do a query to see how many emails are needed to be sent, you need to do store
// this data in mysql or some other place.
// array getEmails() { }

$total = count( getEmails());
$pages = ceil($total / MAX_EMAIL_BUFFER_SIZE);
$i = 0;
for(; $i < $total; $i++) {
  $offset = ($page - 1)  * MAX_EMAIL_BUFFER_SIZE;
    /* query
    SELECT
        *
    FROM
        table
    ORDER BY
        name
    LIMIT
        MAX_EMAIL_BUFFER_SIZE
    OFFSET
        $offset
   */
  // the result returned by the query are the emails you wills send.
  // do the above query in a function that returns the results

  foreach($data as $email) {
    mail(...);
  }
  // sleep for 10 seconds.
  sleep(10);
}