我正在提供一项服务,其中从用户端请求一个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
");
?>
答案 0 :(得分:0)
最后我得到了解决方案,那就是要添加
> /dev/null 2>&1 &
在电子书转换行的末尾。这样做是将输出重定向到null并释放php文件,以便它可以包含另一个请求!