- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个简单的网络服务,它接受视频上传,在视频上运行多种不同的编码(mp4、webm、ogv),然后将新创建的文件上传到我们的视频主机。
假设我有多个命令..
shell_exec('ffmpeg -i input.mp4 -f mp4 -c:v libx264 -preset slow -crf 24 -s 1280x720 -c:a libfdk_aac -profile:a aac_he -ar 22050 -b:a 64k -movflags +faststart output-1280x720.mp4');
shell_exec('ffmpeg -i input.mp4 -f mp4 -c:v libx264 -preset slow -crf 24 -s 1920x1080 -c:a libfdk_aac -profile:a aac_he -ar 22050 -b:a 64k -movflags +faststart output-1920x1080.mp4');
shell_exec('ffmpeg -i input.mp4 -f ogg -c:v libtheora -q:v 5 -s 1280x720 -c:a libvorbis -ar 22050 -b:a 64k -movflags +faststart output-1280x720.ogv');
shell_exec('ffmpeg -i input.mp4 -f ogg -c:v libtheora -q:v 5 -s 1920x1080 -c:a libvorbis -ar 22050 -b:a 64k -movflags +faststart output-1920x1080.ogv');
>/dev/null 2>/dev/null &
来强制 shell_exec 在后台运行。到每个命令 - 这将允许我立即打印响应 - 但我认为这样做会导致所有作业并行运行,而且由于这会转移输出,我没有得到任何作业完成时的真正回调。
最佳答案
我决定采用异步请求文件的想法。为了保持干净,我能够将其全部包含在一个文件中,该文件通过不同的 POST 请求“重新调用”自身。
$root_path = $_SERVER['DOCUMENT_ROOT'] . '/';
$root_http = 'http' . (isset($_SERVER['HTTPS']) ? 's' : '') . '://' . $_SERVER['HTTP_HOST'] . '/';
function request_async($url, $params, $type='POST', $timeout=30) {
foreach ($params as $key => &$val) {
if (is_array($val)) $val = implode(',', $val);
$post_params[] = $key.'='.urlencode($val);
}
$post_string = implode('&', $post_params);
$parts = parse_url($url);
$fp = fsockopen(
$parts['host'],
isset($parts['port']) ? $parts['port'] : 80,
$errno,
$errstr,
$timeout
);
if ('GET' == $type) $parts['path'] .= '?'.$post_string;
$out = "$type ".$parts['path']." HTTP/1.1\r\n";
$out.= "Host: ".$parts['host']."\r\n";
$out.= "Content-Type: application/x-www-form-urlencoded\r\n";
$out.= "Content-Length: ".strlen($post_string)."\r\n";
$out.= "Connection: Close\r\n\r\n";
if ('POST' == $type && isset($post_string)) $out .= $post_string;
fwrite($fp, $out);
fclose($fp);
}
function get_http_path($path, $relative = FALSE){
global $root_http, $root_path;
return str_replace($root_path, $relative ? '/' : $root_http, $path);
}
$url = $_POST['url'];
$media = $_POST['media'];
if (isset($url)) {
request_async(get_http_path(__FILE__), array(media => $url), 'POST', 1800);
echo '{"success": true}';
} else
if (isset($media)) {
$data = file_get_contents($media);
// KICK OFF JOBS HERE
echo '{"success": true}';
} else {
echo '{"success": false}';
}
关于PHP:立即返回响应,但在后台运行多个冗长的 shell_exec 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34424212/
我有一些记录到标准输出的测试,我想根据 nose 运行的冗长程度更改我的测试脚本中的日志级别。 如何从正在运行的测试之一中访问 running nose 实例的详细信息? 最佳答案 这有点 hack,
我们正在尝试序列化一个对象树。虽然我们已经成功了。我希望找到一种方法来简化生成的 xml。 对象看起来像下面这样: public class RuleSet { public IEnumera
查看 git-config 变量和 git-pull 文档,我没有看到默认情况下使 git-pull pull 冗长的方法。有人知道方法吗? 最佳答案 并不是所有的配置参数都适用!但是您可以使用别名自
我有一个小型或中等规模的 F# 项目,15 个 *.fs 文件,大约 2000 行代码。编译突然有点慢,大约5秒。我想找出导致编译速度变慢的原因,但找不到像“详细”这样的 fsc 开关,导致它显示进度
许多 scikit-learn 函数都有一个 verbose 参数,根据他们的文档,“[c]控制详细程度:越高,消息越多”(例如,GridSearchCV)。 很遗憾,没有提供关于允许使用哪些整数(例
我正在尝试以旧方式运行 Rails 测试,即以点作为输出,但我认为我遗漏了一些东西。我找不到在哪里关闭冗长模式,每次我运行 rake 任务时,我都会得到一个测试描述列表,这些描述起初看起来不错,但最终
我是一名优秀的程序员,十分优秀!