【问题标题】:Long running ajax call in Laravel pausing the serverLaravel 中长时间运行的 ajax 调用暂停服务器
【发布时间】:2022-12-08 06:48:27
【问题描述】:

我正在尝试在 Laravel 8 中构建一个视频编辑应用程序。当您单击一个按钮时,它会通过运行 shell_exec 命令的 ajax 调用一个路由,该命令可能需要 10 分钟或更长时间才能运行。

它正在运行 ffmpeg 命令。我希望页面知道脚本何时完成,以便它可以在浏览器中重新加载视频,但如果用户关闭浏览器,脚本继续运行也很重要。

一切正常,但问题是站点上的所有页面都被冻结并且在 ffmpeg 完成之前无法加载 - 即 localhost:8000 中的所有页面。 localhost/ 上的页面都很好。

我读到解决方案是将 session_write_close() 放在 shell_exec 之前,而在 Laravel 中你应该将 session()->save() 或 $request->session()->save(); ?但是我尝试过的任何事情都没有任何区别。

在此先感谢,如果有人可以帮助解决这个问题。

【问题讨论】:

  • 我不知道这是否对您有帮助,但您是否尝试过使用“nohup”运行 exec 命令?基本上 nohup 在后台发送 exec 命令,页面仍然可用并且可以做任何您想做的事情。使用 exec 正在调用的脚本在视频处理完成后更新数据库,然后我会使用 ajax 调用(可能每 5 秒一次)在视频完成时检查数据库更新。

标签: php ajax laravel-8


【解决方案1】:

我发现的问题是因为它正在运行带有“php artisan serve”的 Laravel 应用程序,它使用 php 的内置服务器并且仅为开发而设计。

当我重新调整代码使其在 apache 中运行时,无需运行 php artisan serve,它能够同时运行多个 ffmpeg 实例。

希望这对某人有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    相关资源
    最近更新 更多