![]() |
1
2
您需要阅读关于函数set_time_limit和ini_set(‘memory_limit’,xxmb’)的内容; 您可以从Web进程中运行php cli脚本,这将导致( pcntl_fork )然后杀死父级(父级CLI进程退出)。运行脚本的Web服务器线程可以继续使用其他代码或退出。 现在,cli子进程(a)可以分叉(并成为父进程)并监视发送电子邮件的子进程(b)。如果子进程B死了,那么现在的父进程A可以再次分叉,新的子进程将在前一个进程停止的地方继续。 您必须在文件/db/共享内存或通过成对的套接字跟踪发送电子邮件的对象。( socket_create_pair )使用父进程。 我希望你明白这个想法。 |
![]() |
2
1
在这里,PHP不是合适的工作工具——您需要独立于Web服务器运行的东西(尽管可能由它触发),否则您肯定会遇到超时。 例如,您可以使用PHP system() 输出到另一个脚本(perl?蟒蛇?)从数据库中读取作业信息,然后分叉到后台进行工作。 |
![]() |
3
1
你说没有cron脚本-你没有访问服务器上的cron的权限吗?或者您的问题是不想在每次必须发送邮件作业时手动设置cron作业? 你可能想看看 http://pear.php.net/package/Mail_Queue -这是我最近一直用的东西。您可以让名为script的用户将所有电子邮件一次转储到邮件队列中。这比实时发送电子邮件要快得多,因为您不需要处理服务器之间的通信,而只需要处理数据库。 然后,您有一个cron脚本,每隔几分钟调用mail_queue::sendmailsinqueue命令,对每个cron调用发送的电子邮件数进行限制。如果这是您的问题,那么您不必处理cron脚本——如果队列是空的,那么它将退出。然后,您的电子邮件将以合理的速度从服务器中流出。这将防止超时,因为每个cron调用的电子邮件限制。这也有助于避免与其他邮件服务器的麻烦,他们可能不高兴突然受到来自您的许多电子邮件的打击。 |
![]() |
Zaid Direya · 批量插入验证的最佳方法laravel 5 9 年前 |
|
Richard Foresee · SonarQUBE按语言筛选项目并批量删除 10 年前 |
![]() |
Has QUIT--Anony-Mousse · 批量加载最小-最大堆 12 年前 |