首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一起使用电动汽车和路虎?

一起使用电动汽车和路虎?
EN

Stack Overflow用户
提问于 2022-08-01 06:57:10
回答 1查看 53关注 0票数 0

app_example.php

试图将RR应用程序和Ev的示例结合在一起。尝试使用Ev更新全局变量,该变量用于HTTP响应。

Ev:run(Ev::RUN_NOWAIT);似乎没有任何效果。

Ev:run();works。但是Ev是在http请求被处理之前完成的。希望在处理http请求的同时定期执行Ev。

代码语言:javascript
复制
use Spiral\RoadRunner;
use Nyholm\Psr7;

include "vendor/autoload.php";

$worker = RoadRunner\Worker::create();
$psrFactory = new Psr7\Factory\Psr17Factory();

$psr7 = new RoadRunner\Http\PSR7Worker($worker, $psrFactory, $psrFactory, $psrFactory);

$global_variable = 0;

**$w = new EvTimer(2, 1, function ($w) {
    global $global_variable;
    $global_variable++;
    echo "is called every second, is launched after 2 seconds\n";
    echo "iteration = ", Ev::iteration(), PHP_EOL;
    // Stop the watcher after 5 iterations
    Ev::iteration() == 5 and $w->stop();
    // Stop the watcher if further calls cause more than 10 iterations
    Ev::iteration() >= 10 and $w->stop();
});
Ev::run(Ev::RUN_NOWAIT);
# Ev::run();**

while (true) {
    try {
        $request = $psr7->waitRequest();

        if (!($request instanceof \Psr\Http\Message\ServerRequestInterface)) { // Termination request received
            break;
        }
    } catch (Exception $ex) {
        $psr7->respond(new Psr7\Response(400)); // Bad Request
        continue;
    }

    try {
        // Application code logic
        $psr7->respond(new Psr7\Response(200, [], 'Hello RoadRunner!' . $global_variable));
    } catch (Exception $ex) {
        $psr7->respond(new Psr7\Response(500, [], 'Something Went Wrong!'));
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-01 16:28:07

代码语言:javascript
复制
<?php

use React\EventLoop\Loop;

require __DIR__ . '/vendor/autoload.php';

$http = new React\Http\HttpServer(function (Psr\Http\Message\ServerRequestInterface $request) {
    return React\Http\Message\Response::plaintext(
        "Hello World!\n"
    );
});

$socket = new React\Socket\SocketServer('127.0.0.1:8080');
$http->listen($socket);

echo "Server running at http://127.0.0.1:8080" . PHP_EOL;


Loop::addPeriodicTimer(5, function () {
    $memory = memory_get_usage() / 1024;
    $formatted = number_format($memory, 3).'K';
    echo "Current memory usage: {$formatted}\n";
    # here is my own little logic to get data from db
    # to update global variables
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73189839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档