如何处理多个https请求以同时运行php脚本?

时间:2020-09-05 04:28:30

标签: php linux apache https

我正在提供一项服务,其中从用户端请求一个URL,该服务在linux服务器中运行一个PHP脚本,PHP脚本下载一个文件,对其进行处理并将其邮寄到用户的电子邮件地址(这是一个RSS FEED To MAIL服务)一次只发送一个请求,一切都很好,但是我尝试发送多个请求,但挂起了服务器,我不得不重新启动,再次尝试了一次,这次又把它留了一夜,我发现文件已发送到所有请求,但发出请求后2小时内。单个请求需要2分钟,两个请求应该需要4至5分钟,为什么要花费2个小时。

请帮助我了解正在发生的事情以及如何解决?

我正在使用Calibre,并通过url提供的信息随时随地创建配方,包括prorssemail.php是包含PHPMailer脚本的脚本,用于将生成的文件邮寄出去!

谢谢

<?php
$email = $_GET['email'];
$url = $_GET['url'];
$title = $_GET['title'];
exec("
mkdir /var/www/prorss/$email;
cat > /var/www/prorss/$email/file.recipe << EOF
#!/usr/bin/env python2
# vim:fileencoding=utf-8
from __future__ import unicode_literals, division, absolute_import, print_function
from calibre.web.feeds.news import AutomaticNewsRecipe

class BasicUserRecipe1597373876(AutomaticNewsRecipe):
    title          = '$title'
    oldest_article = 1
    max_articles_per_feed = 100
    auto_cleanup   = True

    feeds          = [
        ('$url')
    ]
EOF
");
exec("
ebook-convert /var/www/prorss/$email/file.recipe /var/www/prorss/$email/file.pdf &
");
include 'prorssemail.php';
exec("
rm -r /var/www/prorss/$email
");
?>

1 个答案:

答案 0 :(得分:0)

最后我得到了解决方案,那就是要添加

> /dev/null 2>&1 &

在电子书转换行的末尾。这样做是将输出重定向到null并释放php文件,以便它可以包含另一个请求!

相关问题