使用moodle邮件睡眠()

使用moodle邮件睡眠(),moodle,Moodle,当用户注册时,20秒后会向用户发送一封电子邮件。可以在moodle中使用sleep()进行编码吗 sleep(20); if (!send_confirmation_email($user)) { print_error('noemail','core_email'); } 如果你想用“黑客”的方式来修补一些核心文件,sleep(seconds)确实是最简单的方法。 如果你正在写一个插件,你可以看看,尤其是在。不过,在您的cron作业被触发之前,这不会执行。因此,您必须降低cron执

当用户注册时,20秒后会向用户发送一封电子邮件。可以在moodle中使用sleep()进行编码吗

sleep(20);
if (!send_confirmation_email($user)) {
    print_error('noemail','core_email');
} 

如果你想用“黑客”的方式来修补一些核心文件,
sleep(seconds)
确实是最简单的方法。

如果你正在写一个插件,你可以看看,尤其是在。不过,在您的cron作业被触发之前,这不会执行。因此,您必须降低cron执行时间限制。除此之外,目前还没有使用moodle API执行此操作的选项。

睡眠将相当差,并且会阻塞会话。正如德坎兹勒所说,临时任务是正确的选择

从开始,您可以在保持活动状态模式下运行临时任务,它们将作为psuedo守护进程持续处理:

php admin/cli/adhoc_task.php--keep alive=60--execute 如果您仍然希望电子邮件在大约20秒后发送,当您使用任务API对任务进行排队时,您可以设置它应该运行的未来时间:


无论哪种方式,这听起来都是一个可怕的想法,强迫用户在浏览器中任意一种方式运行20秒,或者等待重新加载电子邮件客户端20秒。我强烈建议不要这样做。

以上代码是使用sleep()的正确方法。我测试过了,它不起作用。它在20秒前发送了一封电子邮件。您说不可能在moodle中编码,但可以使用cron作业。您可以使用cron a cron作业。但是cron作业只在指定的时间间隔内执行。因此,如果您每5分钟运行一次cron作业,则电子邮件可能需要5分钟才能发送。因此,您唯一的选择是将cron作业的间隔设置为20秒。电子邮件将在20秒或更短的时间内发送。从开始,您可以在保持活动模式下运行临时任务,并且它们将作为psuedo守护进程持续处理。如果您仍然希望电子邮件在大约20秒后发送,当您使用任务API对任务进行排队时,您可以设置它应该运行的未来时间: