Php 如何使用drupal使用命令行命令

Php 如何使用drupal使用命令行命令,php,drupal,terminal,vlc,Php,Drupal,Terminal,Vlc,我有一个云服务器,我在其中运行Drupal7。 由于某些原因,我不得不在服务器端使用VLC播放器进行实时视频录制。 我可以通过运行命令行命令来实现这一点。 但是我想知道我是否可以用drupal为客户提供一个网页,其中 客户端可以添加实时视频url,并在单击“提交我的命令行”命令时添加 在服务器终端中运行。。。诸如此类 请告诉我这是否可能 对此,我们将非常感谢您提供的任何线索/链接 提前感谢exec和shell\u exec将帮助您入门 它们允许您从命令行执行任何linux命令 小心点!!!确保

我有一个云服务器,我在其中运行Drupal7。 由于某些原因,我不得不在服务器端使用VLC播放器进行实时视频录制。 我可以通过运行命令行命令来实现这一点。 但是我想知道我是否可以用drupal为客户提供一个网页,其中 客户端可以添加实时视频url,并在单击“提交我的命令行”命令时添加 在服务器终端中运行。。。诸如此类 请告诉我这是否可能 对此,我们将非常感谢您提供的任何线索/链接
提前感谢

exec
shell\u exec
将帮助您入门

它们允许您从命令行执行任何linux命令


小心点!!!确保您不是从字符串动态创建命令。这将为您打开最大的管理空间。

exec
shell\u exec
将帮助您入门

它们允许您从命令行执行任何linux命令


小心点!!!确保您不是从字符串动态创建命令。这可能会让您获得最大的管理空间。

Drupal部分实际上是最简单的部分。您需要实现为表单提供一个页面(使用构建)


编码视频是最难的部分。任何用于直接从PHP启动视频编码过程的方法都必须仔细编写。例如,它必须处理流程管理,以避免使用过多的编码对服务器过度收费。它还必须确保进程在后台正确启动,以避免阻塞PHP进程(避免超时)。一个可能更好的解决方案是使用某种后台进程管理器将编码排队。这可能是一个简单而干净的解决方案。它还允许您使用更适合长时间运行的视频编码的单独语言编写视频编码过程。目前正在开发一个用于帮助在Drupal中使用它的组件,但这不是必需的。

Drupal组件实际上是最简单的组件。您需要实现为表单提供一个页面(使用构建)


编码视频是最难的部分。任何用于直接从PHP启动视频编码过程的方法都必须仔细编写。例如,它必须处理流程管理,以避免使用过多的编码对服务器过度收费。它还必须确保进程在后台正确启动,以避免阻塞PHP进程(避免超时)。一个可能更好的解决方案是使用某种后台进程管理器将编码排队。这可能是一个简单而干净的解决方案。它还允许您使用更适合长时间运行的视频编码的单独语言编写视频编码过程。有一个,目前正在开发中,以帮助它在Drupal中的使用,但它不是必需的。

Hey pierre,我让Drupal部分工作,并在提交钩子中添加这行代码shell_exec(“vlc-i rc\”\“\”--sout''transcode{vcodec=mp4v,vb=1024,acodec=mp4a,ab=256}:standard{mux=mp4,dst=/Users/abhishek/Desktop/output451.mp4,access=file}'); 我正在本地主机上运行这个drupal模块,但无法让它在桌面上创建文件。而如果我在终端上执行相同的命令,它就会工作如果我在命令行中键入vlc,那么vlc播放器就会启动,现在如果我键入$output=shell_exec(“vlc 2>&1”);打印(“”.$output);我得到sh:vlc命令没有找到正如我所说的,编码部分是最难的部分。vlc可能不在shell_exec()环境的路径中。从PHP运行命令不像从终端运行命令那么简单和直接。您真的应该寻找一种解决方案,允许您异步地将编码分派到一个单独的daemonized进程。嘿,pierre,我让drupal部分工作,在提交钩子中,我添加了这行代码shell_exec(“vlc-i rc \“\”\”--sout'#transcode{vcodec=mp4v,vb=1024,acodec=mp4a,ab=256}:标准{mux=mp4,dst=/Users/abhishek/Desktop/output451.mp4,access=file}');我正在本地主机上运行这个drupal模块,但无法让它在桌面上创建文件。如果我在终端上执行相同的命令,它就会工作。如果我在命令行中键入vlc,那么vlc播放器就会启动,现在如果我键入$output=shell_exec(“vlc 2>&1”);print_r(“”.$output);我得到sh:vlc命令未找到正如我所说,编码部分是最难的部分。vlc可能不在shell_exec()的路径中环境。从PHP运行命令并不像从终端运行命令那样简单和直接。您应该真正寻找一种解决方案,允许您将编码异步分派到一个单独的守护进程。我使用的是shell_exec和代码行this->$output=shell_exec(“ls-lart”);print_r('.$output);工作正常,但如果我编写vlc命令行,它永远不会像这样工作->shell_exec(“vlc-IRC\“COMPLETE_URL\”--sout'#transcode{vcodec=mp4v,vb=1024,acodec=mp4a,ab=256}:standard{mux=mp4,dst=/Users/abhishek/Desktop/output451.mp4,access=file}”);另外,我将如何停止录制?这是另一个问题我正在使用shell_exec和代码行这->$output=shell_exec(“ls-lart”);print_r('.$output”);工作正常,但如果我写vlc命令行,它永远不会像这样工作->shell_exec(“vlc-i rc\“COMPLETE_URL\”--sout'.\t转换代码{vcodec=mp4v,vb 1024,acodec=mp4a,ab=256}:标准{mux=mp4,dst=/Users/abhishek/Desktop/output451.mp4,access=file}'”;另外,如何停止录制?这是另一个问题
function MODULE_menu() {
  return array(
    'encode_video' => array(
      'page callback' => 'drupal_get_form',
      'page arguments' => array('MODULE_encode_video_form'),
      'access arguments' => 'encode video'
    )
  );
}

function MODULE_encode_video_form($form, &$form_state) {
  $form = array(
    'video_url' => array(
      '#type' => 'textfield', 
      '#title' => t('Video URL'), 
      '#size' => 80, 
      '#required' => TRUE,
    ),
    'submit' =>  array(
      '#type' => 'submit',
      '#value' => t('Encode'),
    ),
  );
  return $form;
}

function MODULE_encode_video_form_validate($form, &$form_state) {
  // Validate and sanitize $form_state['values']['video_url'] here...
}

function MODULE_encode_video_form_submit($form, $form_state) {
  $url = $form_state['values']['video_url'];
  // Start video encoding here...
}