(这个问题的主题可能与问题不符,但我无法想到更好)我有一个网页,用户提供收件人的电子邮件地址,可以有100个或更多的电子邮件地址;在textarea提供。当然,我必须向所有这些地址发送电子邮件。我有两个方法,但无法确定哪一个可以提供更好的用户体验和性能 方法1:我遍历我的js中的所有电子邮件,并向php脚本发送ajax请求。但是那时会有100个请求到服务器,如果用户关闭浏览器,所有的电子邮件地址都不会通过
方法2:我将所有100个电子邮件地址一次性发送到php脚本,让php脚本循环通过电子邮件。我假设我能够在每个循环计数后用一个成功消息回复一些mesg回到客户端,即使客户端已经死了,那么至少php将继续执行直到循环结束
有人可以为我提供这两种方法的缺点和优点
答案 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);
}