Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的漂亮ssh2_Php_Ssh - Fatal编程技术网

php中的漂亮ssh2

php中的漂亮ssh2,php,ssh,Php,Ssh,我有一个php脚本,它使用peclssh2扩展名在服务器之间传输大量文件(大部分情况下是ssh2\u sftp.*)。这些文件每次加起来大约有一档左右。带宽被限制了,所以这不是问题。问题是ssh2进程占用了大量CPU,实际上在上传过程中会减慢服务器的速度。有什么方法可以在某个好的级别启动ssh进程吗?如果php的ssh2函数创建了一个新的进程(我不确定它们是否创建了),那么一旦从php脚本中启动了这个进程,是否可以找到它并renice?由于ssh2函数没有线程化,因此可能没有 基本上,我希望PH

我有一个php脚本,它使用pecl
ssh2
扩展名在服务器之间传输大量文件(大部分情况下是
ssh2\u sftp.*
)。这些文件每次加起来大约有一档左右。带宽被限制了,所以这不是问题。问题是ssh2进程占用了大量CPU,实际上在上传过程中会减慢服务器的速度。有什么方法可以在某个好的级别启动ssh进程吗?如果php的
ssh2
函数创建了一个新的进程(我不确定它们是否创建了),那么一旦从php脚本中启动了这个进程,是否可以找到它并
renice
?由于
ssh2
函数没有线程化,因此可能没有


基本上,我希望PHP的
ssh2
函数不要使用太多CPU。看起来
proc\u nice
可以做到这一点,但看起来我可能不得不使用
ionice
。我该怎么做呢?

简单看看PEAR::ssh2的源代码,就会发现ssh2函数是在线程和进程中执行的,因此没有真正的直接方法。以下是两种可能性:

  • 如果您使用的是多进程apache,请使用proc_nice来减少 优先级,然后apache_child_终止以终止进程。
  • 使用proc_open或friends打开类型为的shell脚本

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

我严重怀疑它们是否会创建一个新进程,因此在开始之前,您最好
nice
ing自己的进程。即使这样,我也有点怀疑这是否会带来巨大的不同——这是在哪个服务器上运行的?我以前从来没有遇到过这个问题,但是我以前从来没有安装过这么大的文件…我对服务器不太确定。。我知道这是Debian。我将玩一玩,看看是否可以重复。如果您不确定服务器正在运行什么,请尝试“uname-a”(作为普通用户),因为这将为您提供线索。如果是Debian,“cat/etc/Debian#u version”将告诉您哪个版本/发行版。@pwaring
Linux dev 2.6.26-2-686-bigmem#1 SMP Wed Sep 21 05:29:18 UTC 2011 i686 GNU/Linux
5.0.9
。修复了您的代码格式。降价有一个问题(bug?),如果您尝试在无序列表之后立即执行四个空格的代码部分,它会变得混乱。解决方法是执行显式HTML
#!/bin/bash
read SRCFILE
read DSTFILE
nice scp "$SRCFILE" "$DSTFILE"