Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
如何检查Tor是否在PHP中运行?_Php_Socks_Tor - Fatal编程技术网

如何检查Tor是否在PHP中运行?

如何检查Tor是否在PHP中运行?,php,socks,tor,Php,Socks,Tor,我将Tor与PHP结合使用,目前,一切正常。但是,当我尝试从php启动Tor时,它有时会抛出一个错误,因为Tor当前正在运行,所以我一直想知道是否有任何方法可以检查Tor的状态(运行或不运行) 我只能使用SOCKS5协议或Linux CLI;这是我唯一的选择 注意:此功能连接到Tor(它工作) 通常,Unix/Linux守护进程通常使用锁文件(通常位于/var/run中)实现“已在运行”检查。您可以使用来检查锁文件是否存在。当然,这不能用于检测进程是否崩溃(从而检测进程是否在任何给定时刻实际运行

我将Tor与PHP结合使用,目前,一切正常。但是,当我尝试从php启动Tor时,它有时会抛出一个错误,因为Tor当前正在运行,所以我一直想知道是否有任何方法可以检查Tor的状态(运行或不运行)

我只能使用SOCKS5协议或Linux CLI;这是我唯一的选择

注意:此功能连接到Tor(它工作)


通常,Unix/Linux守护进程通常使用锁文件(通常位于
/var/run
中)实现“已在运行”检查。您可以使用来检查锁文件是否存在。当然,这不能用于检测进程是否崩溃(从而检测进程是否在任何给定时刻实际运行);可能有必要


至于Tor,一个快速的网络搜索似乎表明你不必这么做。Tor在
/var/run/Tor/control
(根据配置,还监听TCP端口9051)上定位一个,以允许其他程序控制它。尝试通过该套接字(使用PHP和)连接到Tor可能会起作用

我找到了这个问题的解决方案,它基本上是获取所有正在运行的进程并在其中搜索“tor”(基于)

这就是代码:

注意:这段代码只在Ubuntu中测试过,但它应该可以在大多数Linux操作系统上运行


@仆人:在Linux上,您可以检查进程
ps aux|grep“[t]或”
function init()
    {
        //Connect to Tor

        $socket = fsockopen($this->proxyIp, $this->proxyPort);      
        fwrite($socket, 'AUTHENTICATE' . PHP_EOL);

    }  
function isRunning()
{
    //Get all running processes and search for "tor" within them
    //The "[" and "]" are used to execlude ps and grep from the returned result.
    $CLIResult = exec('ps aux | grep -w [t]or');

    //If no processes was found(= Tor is not running..)
    return empty($CLIResult);

}