gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 22:55:21 24 4
gpt4 key购买 nike

我想知道如何在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com