如何在PHP中使用多线程

jia*_*ian 4 php multithreading ffmpeg

我现在正在开发一个关于在互联网上分享视频的网站.流程如下:用户上传视频 - >服务器端接收视频并使用ffmpeg将视频格式转换为flv - >用户继续在网站上做其他事情.现在我想建立另一个线程来进行转换工作(使用ffmpeg将视频格式转换为flv),这样用户可以做其他事情而无需等待视频转换为flv.但不知道怎么做!

rid*_*rid 6

PHP不支持线程.您应该使用cron脚本运行的后台任务来执行此操作.

您可以拥有一个包含要处理的作业的表,例如,包含磁盘上的文件名,状态(挂起,转换,就绪)等,然后让脚本获取所有挂起的作业,将其状态更改为转换,转换文件,然后将状态更改为ready.这样,您还可以向用户显示信息,如果您希望同时转换多个文件,则可以运行多个脚本.

  • @DenisErmolin`cdntl_fork()`在Web请求的上下文中不起作用,如果退出主进程以返回响应,您将离开孤立进程.如果你想做那样的话,那就更好了`exec('php /path/to/script.php>/dev/null 2>&1&')` (2认同)