当用户查看某个个人资料页面时,我需要向最终用户发送一封电子邮件,但如果可能的话,我希望异步执行此操作。这可以用PHP完成吗?我真的不想在呈现页面的其余部分之前等待 PHP 函数完成。它对用户应该是无缝的。
或者这是来自客户端的更好解决方案:
$.post("msg.php?user=xxx", function(data) {
....
}, "json");
有首选方法吗?
如果您想要交互性,请选择ajax()
方法;如果你只是想点击一个监听器脚本(从而初始化一组 PHP 功能),使用post()
它是同一方法的简写版本:
$(function() {
// If you just want to activate a listener script (with no interaction)
$.post('/path/to/script.php');
// If you want to receive data back from your script for use in the DOM
$.ajax({
type: "POST",
url: "/path/to/script.php",
data: { name: "John", location: "Boston" }
}).done(function( response ) {
alert( response );
});
});
正如您所建议的,让您的页面执行异步操作的最佳方法是使用 AJAX。
如果您遇到服务器端解决方案,您可以使用 proc_open 或 shell_exec 执行脚本。根据您的环境,这可能会有一些限制,但这通常是多线程 PHP 的一种快速而肮脏的方式,因此允许异步发生。
也就是说,在脚本中的某处,如果设置了一个标志(例如通知标志),它将分派一个类似 '../private/notify.php' 的进程......看看如何将参数传递给命令行调用php。还有直接调用 sendmail 的选项。
确保在尝试之前对其进行一些测试;您需要确保: