在PHP中很好的ssh2

时间:2012-01-16 15:45:10

标签: php ssh

我有一个php脚本,在服务器之间使用pecl ssh2扩展名(ssh2_sftp_*大部分)传输大量文件。这些文件每次加起来大约一场演出。带宽被限制,所以这不是问题。问题是ssh2进程占用了大量的CPU,实际上在上传过程中减慢了服务器的速度。有没有办法在一个很好的水平上启动ssh进程?如果php的ssh2函数创建了一个新进程(我不确定它们是否这样做),那么一旦从php脚本中启动它,是否有可能找到并renice这个进程?由于ssh2函数没有线程,因此可能没有。

基本上,我希望PHP的ssh2函数不要使用这么多CPU。似乎proc_nice会执行此操作,但看起来我可能不得不使用ionice。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

简要介绍一下PEAR :: ssh2的来源,表明SSH2函数是在线程和进程中执行的,因此没有真正直接的方法。这有两种可能性:

  • 如果您使用的是多进程apache,请使用proc_nice进行减少    优先级,然后apache_child_terminate来杀死进程。
  • 使用proc_open或friends打开该类型的shellcript
#!/bin/bash
read SRCFILE
read DSTFILE
nice scp "$SRCFILE" "$DSTFILE"

我们将后者用于相当多的CPU占用任务