我最近刚刚被要求开发一个允许群发电子邮件的 PHP 应用程序。为此,我有一个 PHP 脚本,它简单地从 MySQLDatabase 中获取电子邮件地址并循环访问它们,个性化每个地址,然后发送它们。
它工作得很好,但是我们有一个小问题,当这个 PHP 脚本正在运行时(显然它需要几分钟才能运行),用户不能在应用程序上做任何其他事情。其他人可以访问它,但有问题的用户在发送电子邮件时无法加载应用程序的任何其他页面。
有没有办法解决这个问题,或者这只是我们必须忍受的事情?
我最近刚刚被要求开发一个允许群发电子邮件的 PHP 应用程序。为此,我有一个 PHP 脚本,它简单地从 MySQLDatabase 中获取电子邮件地址并循环访问它们,个性化每个地址,然后发送它们。
它工作得很好,但是我们有一个小问题,当这个 PHP 脚本正在运行时(显然它需要几分钟才能运行),用户不能在应用程序上做任何其他事情。其他人可以访问它,但有问题的用户在发送电子邮件时无法加载应用程序的任何其他页面。
有没有办法解决这个问题,或者这只是我们必须忍受的事情?
在这种情况下,用户对页面打开了一个会话,该页面当前正在处理一个 PHP 页面。因此,用户无法(在同一会话中)打开同一站点上的另一个页面。
处理此问题的一种方法是由用户启动此过程,但不要让用户正在访问的脚本发送电子邮件。例如,您可以在数据库中创建一个“待办事项”列表,然后让 cronjob 处理它。这样用户仍然可以访问其他页面。
基本上,执行一个 php 脚本,然后将页面发送到客户端。因此,在脚本运行时访问者被卡在页面上是正常的。
查看此类任务的 cronjobs。
确保您的长时间运行的脚本没有应用会话。