承接 asmblah/fast-cgi 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

asmblah/fast-cgi

最新稳定版本:v0.1.2

Composer 安装命令:

composer create-project asmblah/fast-cgi

包简介

README 文档

README

Build Status

Simplifies management of a real php-cgi worker process or php-fpm worker pool.

Leverages the excellent hollodotme/fast-cgi-client for a FastCGI API.

Why?

Easy testing of a FastCGI application's behaviour across requests: for example, ensuring that opcache is cleared correctly when expected.

Usage

$ composer install --dev asmblah/fast-cgi

Launching a php-cgi instance and making a GET request to it:

Use PhpCgiLauncher for php-cgi.

test.php

<?php

declare(strict_types=1);

use Asmblah\FastCgi\FastCgi;
use Asmblah\FastCgi\Launcher\PhpCgiLauncher;

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

$baseDir = __DIR__;
$wwwDir = 'www'; // Relative to $baseDir.
$phpCgiBinaryPath = dirname(PHP_BINARY) . '/php-cgi';

$dataDir = $baseDir . '/var/test';
@mkdir($dataDir, 0700, true);
$socketPath = $dataDir . '/php-cgi.test.sock';

$fastCgi = new FastCgi(
    baseDir: $baseDir,
    wwwDir: $wwwDir,
    socketPath: $socketPath,
    launcher: new PhpCgiLauncher($phpCgiBinaryPath)
);
$session = $fastCgi->start();

$response = $session->sendGetRequest(
    'my_script.php',
    '/path/to/my-page',
    [
        'greeting' => 'Hello',
    ]
);

// Will print "Hello from my front controller!".
print $response->getBody() . PHP_EOL;

$session->quit();

www/my_script.php

<?php

declare(strict_types=1);

print ($_GET['greeting'] ?? '(none)') . ' from my front controller!';

Run

$ php test.php
Hello from my front controller!

Launching a php-fpm instance and making a GET request to it:

Use PhpFpmLauncher for php-fpm.

test.php

<?php

declare(strict_types=1);

use Asmblah\FastCgi\FastCgi;
use Asmblah\FastCgi\Launcher\PhpFpmLauncher;

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

$baseDir = __DIR__;
$wwwDir = 'www'; // Relative to $baseDir.
$phpFpmBinaryPath = dirname(PHP_BINARY, 2) . '/sbin/php-fpm';

$dataDir = $baseDir . '/var/test';
@mkdir($dataDir, 0700, true);
$socketPath = $dataDir . '/php-fpm.test.sock';
$logFilePath = $dataDir . '/php-fpm.log';

$configFilePath = $dataDir . '/php-fpm.conf';
file_put_contents($configFilePath, <<<CONFIG
[global]
error_log = $logFilePath

[www]
listen = $socketPath
pm = static
pm.max_children = 1

CONFIG
);

$fastCgi = new FastCgi(
    baseDir: $baseDir,
    wwwDir: $wwwDir,
    socketPath: $socketPath,
    launcher: new PhpFpmLauncher(
        $phpFpmBinaryPath,
        $configFilePath
    )
);
$session = $fastCgi->start();

$response = $session->sendGetRequest(
    'my_script.php',
    '/path/to/my-page',
    [
        'greeting' => 'Hello',
    ]
);

// Will print "Hello from my front controller!".
print $response->getBody() . PHP_EOL;

$session->quit();

www/my_script.php

<?php

declare(strict_types=1);

print ($_GET['greeting'] ?? '(none)') . ' from my front controller!';

Run

$ php test.php
Hello from my front controller!

See also

统计信息

  • 总下载量: 3.74k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 3
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2024-03-30