1

I use PHP/Nginx as backend for my App. I was afraid that when many users are calling functions into PHP, it will slow down as PHP does not support Async function calls. I check the below MacOS terminal command to get max calls/second by following command :

wrk -t4 -c100 http://103.22.110.32:80/a.php 

results:

Running 10s test @ http://103.22.110.32:80/a.php
 4 threads and 100 connections
 Thread Stats Avg Stdev Max +/- Stdev
 Latency 111.87ms 30.31ms 430.54ms 93.69%
 Req/Sec 207.00 46.30 313.00 79.08%
 8159 requests in 10.05s, 1.58MB read
 Non-2xx or 3xx responses: 8159
Requests/sec: 812.05
Transfer/sec: 160.98KB

I assume that this means that max concurrent calls are ~800 call/sec. ie if i have eg 80k users , it will wait for ~ 100 second. I checked that SWOOLE can support Async call, making PHP superfast. speed can increase to > 60,000 calls/sec easilty.

Original PHP back end code :

 $tasknum = $request->get['Task'];
 switch ($tasknum) {
 case "task":
 Code for task A
 break;
 case "taskb":
 Code for task B
 break;
 case "taskc":
 Code for task c
 break;
 }

I have used below code for SWOOLE :

use Swoole\Http\Server;
use Swoole\Coroutine;
require_once 'vendor/autoload.php';
 
$server = new Server("0.0.0.0", 81);
$server->on('Request', function ($request, $response) {
 // Handle incoming requests
 $tasknum = $request->get['Task'];
 switch ($tasknum) {
 case "task":
 $response->header("Content-Type", "text/plain");
 $response->end("Task A executed successfully.");
 break;
 case "taskb":
 $response->header("Content-Type", "text/plain");
 $response->end("Task A executed successfully.");
 break;
 case "taskc":
 $response->header("Content-Type", "text/plain");
 $response->end("Task A executed successfully.");
 break;
 case "a":
 $response->header("Content-Type", "text/plain");
 $response->end("ppppirnt aaaa");
 break;
 }
});
$server->start();

Question :

  • is this correct approach for to use Swoole , or eg, i can use Croutine ?
  • how to call PHP API call with Task =taskc , eg.
  • when to start Swoole server, and does it stop , or it is working indefinitely
asked Oct 16, 2024 at 20:41

0

Know someone who can answer? Share a link to this question via email, Twitter, or Facebook.

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.