php - 页面关闭后继续 php exec() ffmpeg

标签 php html post ffmpeg

我想知道如何在 exec() 之后继续一个 php 页面( ffmpeg ) 并且页面已关闭。

我有一个表单,允许人们使用 ffmpeg 转换他们的视频文件,但是如果用户点击页面,exec() 会继续运行,但不会执行此 exec 之后的任何内容。

<?php
   if (!empty($_POST) && $imgDir) {
      exec('"/dir/to/ffmpeg" -f image2 -i "' . $imgDir . '" -r 12 -s 610x489 /dir/to/out.avi', $out);

      /* INSERT statement (Not being executed) */
      $sql = "INSERT INTO requests (userID,image) VALUES (?,?)";
      $stmt= $pdo->prepare($sql);
      $stmt->execute([$user_id, $imgDir]);
   }
?>

我希望用户能够单击离开页面,这样他们就不必等待,以后可以下载他们的文件。

最佳答案

在这种情况下,一个常见的解决方案是将转换过程卸载到后台脚本(例如,由 cron 定期触发的作业)。这避免了长时间运行的进程超时的问题,或者外部命令行进程没有正确返回的问题。

网页只会将请求放入队列(例如,在 db 表中)并保存文件。

然后后台服务会从队列中挑选下一个项目,对其进行处理,并将其标记为完成。

然后你必须考虑如何通知用户。您可以向他们发送电子邮件,或者有一个状态页面,他们可以在其中检查他们的工作并下载任何准备好的文件,或两者兼而有之,或您选择的其他一些过程。也许您可以允许用户指定他们希望如何被告知。

关于php - 页面关闭后继续 php exec() ffmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54786942/

相关文章:

jquery - 使用 jquery .ajax() 重定向的 POST 之后获取实际 URL

java - 从 php 执行 jar 文件时无法连接到 X11 服务器

html - 内部带有 HTML 的 PHP for 循环无法正常运行

python - 如何在网络上提供 PDF 文件?

javascript - 仅显示要单击的选项卡的内容

angularjs - Angular - 工厂 http post 返回未定义的值

java - PHP中JSON POST请求解析

php - MySQL/PHP 未插入正确数量的条目

javascript - Highcharts如何在PHP小部件中使用js对象

javascript - 为什么按钮类型是submit?