Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jquery php自动发送电子邮件通知_Php_Jquery_Ajax_Email_Notifications - Fatal编程技术网

使用jquery php自动发送电子邮件通知

使用jquery php自动发送电子邮件通知,php,jquery,ajax,email,notifications,Php,Jquery,Ajax,Email,Notifications,我想在每次新上传、新评论、新帖子等时发送电子邮件通知 现在我正在调用一个函数: notify($user_id, $submitter_id, $post_id); 然后notify()处理这些ID并调用mail(),邮件将发送给“提交者”和之前发表评论的人。问题是,该脚本花费的时间太长,而且由于我向该脚本发送了一个AJAX请求来保存注释,因此用户最终会等待notify()完成。这就像一个链接过程 有谁能给我建议一个更好的方法吗? 我不希望Ajax脚本等待: 保存评论 同时发送电子邮件

我想在每次新上传、新评论、新帖子等时发送电子邮件通知

现在我正在调用一个函数:

 notify($user_id, $submitter_id, $post_id);
然后
notify()
处理这些ID并调用
mail()
,邮件将发送给“提交者”和之前发表评论的人。问题是,该脚本花费的时间太长,而且由于我向该脚本发送了一个AJAX请求来保存注释,因此用户最终会等待
notify()
完成。这就像一个链接过程

有谁能给我建议一个更好的方法吗? 我不希望Ajax脚本等待:

  • 保存评论
  • 同时发送电子邮件

而且我也不能使用cron,因为我希望它是即时的,有点像FB。使用队列存储应发送的电子邮件,并让脚本(例如
cron
作业)发送这些邮件。这样,用户只需等待邮件插入队列,这可能不会花费很长时间


但是,在发送大量邮件时存在各种陷阱,
mail()
确实不是最好的解决方案。

使用队列存储应发送的电子邮件,并让脚本(例如
cron
作业)发送这些邮件。这样,用户只需等待邮件插入队列,这可能不会花费很长时间


但是,在发送大量邮件时存在各种陷阱,
mail()
并不是这里的最佳解决方案。

在FB中,等等。我想你可能会:

当您需要更新
notify
时,您可以向表
outbounds
插入一些消息

insert into `outbounds` (`email`, `status`, `subject`, `message`, `created`, `sent`)
value ('some@address.net', STATUS::created, 'Some thing is happened', 'Message here', NOW(), NULL);
以及总是在运行的脚本,或者像通过
cron
那样执行,或者,您可以将此脚本卷曲为发送消息的设置超时=1

select * from `outbounds` where status = STATUS::created
成功发送后不要忘记

update `outbounds` set `status` = STATUS::sent, sent = NOW() where id = $message_id

在FB等方面。我想你可能会:

当您需要更新
notify
时,您可以向表
outbounds
插入一些消息

insert into `outbounds` (`email`, `status`, `subject`, `message`, `created`, `sent`)
value ('some@address.net', STATUS::created, 'Some thing is happened', 'Message here', NOW(), NULL);
以及总是在运行的脚本,或者像通过
cron
那样执行,或者,您可以将此脚本卷曲为发送消息的设置超时=1

select * from `outbounds` where status = STATUS::created
成功发送后不要忘记

update `outbounds` set `status` = STATUS::sent, sent = NOW() where id = $message_id

如果您一次发送100封电子邮件,我建议您使用第三方服务,如或,我个人最喜欢的服务。您应该能够ping这些服务并继续其余的函数,而无需等待回调。此外,它们的延迟很低,因此您的邮件几乎可以在瞬间送达。

如果您一次发送100封电子邮件,我建议您使用第三方服务,如或,我个人最喜欢的服务。您应该能够ping这些服务并继续其余的函数,而无需等待回调。此外,它们的延迟很低,因此您的邮件几乎可以在瞬间送达。

什么是
notify()
需要这么长时间?也许你应该先检查一下这段代码。如果说一次发送100封电子邮件,那么
notify()
不会花很长时间吗?你应该像在数据库上排队一样,在background@PrabhakarSiddhant:根据您的描述,似乎每次操作都会调用
notify()
,因此,每次对它的调用应该只生成一封邮件?@paul不太可能,它更像是
notify($user\u id,$comment\u id,$post\u id)
,然后扫描在该评论之前发表评论的人,并向他们发送邮件。什么
notify()
花了这么长时间?也许你应该先检查一下这段代码。如果说一次发送100封电子邮件,那么
notify()
不会花很长时间吗?你应该像在数据库上排队一样,在background@PrabhakarSiddhant:根据您的描述,似乎每次操作都会调用
notify()
,因此,每次调用它都应该只生成一封邮件?@paul不太可能,它更像是
notify($user\u id,$comment\u id,$post\u id)
,然后扫描在此评论之前发表评论的人,并向他们发送邮件。你们会说,cron是我最好的选择吗?我想避免使用调度器/cron,让它更即时。我不能混合使用jquery和php来异步激活这两种东西吗?如果我使用这个:*我是否必须让cron一直运行?如果我将它设置为每30秒一次,它是否会使服务器负担过重?所有邮件传递都是异步的。如果您不喜欢使用cron,请使用像FB这样不断运行的脚本。而且,我读了一些评论——可能是你的数据库没有优化?你是否试着让更快的executer
select*from recepients
?只要有一个始终运行的脚本,就像Sergey上面建议的那样,作为选项之一。我这样做的方式是编写一个小服务器,它在端口上等待连接,然后从数据库发送邮件,直到队列为空,然后返回睡眠状态。这意味着它不会忙于等待——这是你永远不想做的,但它会在需要时立即做出反应。服务器不需要很复杂。请理解。Cron似乎是这里最好的选择。谢谢@Sergey,我只使用这个。在Linux:,请使用电源,Luke,对不起:请使用谷歌搜索searcg教程。你们会说,cron是我最好的选择吗?我想避免使用调度器/cron,让它更即时。我不能混合使用jquery和php来异步激活这两种东西吗?如果我使用这个:*我是否必须让cron一直运行?如果我将它设置为每30秒一次,它是否会使服务器负担过重?所有邮件传递都是异步的。如果您不喜欢使用cron,请使用像FB这样不断运行的脚本。而且,我读了一些评论——可能是你的数据库没有优化?你是否试着让更快的executer
select*from recepients
?只要有一个始终运行的脚本,就像Sergey上面建议的那样,作为选项之一。我不会这么做的