[已解决]创建一个http服务用file_get_contents访问没有数据返回

liong

问题描述

创建一个http服务,在浏览器访问很快就有数据返回

在代码里用 file_get_contents('http://127.0.0.1:8092');访问,没有数据返回

$worker  = new Worker('http://0.0.0.0:8092');
$worker->onMessage = function(TcpConnection $connection, Request $request)
{
    $connection->send("hello");
};
Worker::runAll();
232 2 0
2个回答

walkor

如果是是只开一个进程(例如windows系统下)自己file_get_contents自己就访问不到。

  • liong 2024-03-07

    linux下一个进程

  • liong 2024-03-07

    我设置了2个进程,用file_get_contents还是访问不到

nitron

只开一个进程访问不到

  • liong 2024-03-07

    我设置了2个进程,用file_get_contents还是访问不到

  • nitron 2024-03-07

    多设置几个呗,你设置两个还是还大概率分配到同一个进程上

  • liong 2024-03-07

    ------------------------------------------------------------- WORKERS -------------------------------------------------------------
    proto user worker listen processes status
    tcp root none http://0.0.0.0:3001 1 [OK]

    Press Ctrl+C to stop. Start success.
    ^ "ad"
    ^ 123
    能看到收到的数据

    $worker = new Worker('http://0.0.0.0:3001');
    $worker->count = 1;
    $worker->onMessage = function(TcpConnection $connection, Request $request)
    {
    dump($request->get('abc'));
    $connection->send("hello");
    dump(123);
    };
    Worker::runAll();

    请求端代码:
    try {
    dump(date('H:i:s'));
    $rlt = file_get_contents('http://127.0.0.1:3001?abc=ad');
    dump('请求结束');
    dump($rlt);
    }catch (\Exception $e){
    dump(date('H:i:s'));
    }

    结果:
    ^ "10:10:14"
    ^ "请求结束"
    ^ "hello"
    ^ "10:12:14"

    过了2分钟才返回的数据

  • liong 2024-03-07

    改用下面的代码可以搞定,马上返回
    $url = 'http://127.0.0.1:3001?abc=ad';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $rlt = curl_exec($ch);
    curl_close($ch);

🔝