php中需通过exec()获取ffmpeg退出码并用嵌套三元运算符精准映射:0→成功(200)、127→未安装(503)、1→参数错误(400)、-9→被终止(409),配合abs()处理负码及htmlspecialchars防xss。

要在PHP中根据FFmpeg转码进程的返回结果快速区分成功、超时、编码失败或权限错误,并动态返回前端可读提示与HTTP状态码,就得用对三元运算符的结构嵌套、空值防护和优先级控制方式。
判断FFmpeg执行是否完成并提取退出码
第一步:调用exec()捕获FFmpeg命令的原始输出与退出状态,必须显式传入第三个参数接收$return_code。【不传该参数将无法获取真实退出码,永远默认为0】
第二步:用三元直接判别$return_code是否为0 → $isSuccess = $return_code === 0 ? true : false;
第三步:若$return_code非0,不能直接用它做字符串拼接——某些系统会返回负数(如-9代表被kill),需abs()处理再映射语义。
按退出码映射具体错误类型
方法一:显式括号嵌套(推荐用于关键路径)
$message = ($return_code === 0) ? '转码完成' : (($return_code === 127) ? 'FFmpeg未安装' : (($return_code === 1) ? '参数错误' : (($return_code === -9) ? '进程被强制终止' : '未知错误')));
方法二:空合并+三元组合(仅限退出码为正整数且含义明确)
$message = $return_code === 0 ? '转码完成' : ($return_code ?: '执行中断');
【若$return_code是-9,方法二会因PHP将负数转为true而走左侧分支,实际应进“进程被强制终止”】
联动HTTP状态码与前端提示
第一步:定义状态码映射规则
① $return_code === 0 → HTTP 200
② $return_code === 127 → HTTP 503
③ $return_code === 1 → HTTP 400
④ $return_code === -9 → HTTP 409
第二步:用单层三元构建响应头
http_response_code($return_code === 0 ? 200 : ($return_code === 127 ? 503 : ($return_code === 1 ? 400 : ($return_code === -9 ? 409 : 500))));
第三步:输出JSON响应体,注意对$message做htmlspecialchars转义防XSS注入:
echo json_encode(['status' => $isSuccess, 'msg' => htmlspecialchars($message)]);
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











