phizzl/uptimetools

此软件包已被废弃,不再维护。未建议替代软件包。

dev-master 2017-05-24 09:40 UTC

This package is auto-updated.

Last update: 2022-11-13 00:18:29 UTC


README

这个库应该可以帮助使用PHP提供网络服务的运行时间信息。

检查

实现了不同类型的检查。

HTTP(S)关键字

这个检查会请求一个给定的HTTP(S)资源,并检查其列表中的关键字。因为它检查的是普通返回值,所以任何返回值都可以进行检查。

use Phizzl\UptimeTools\Checks\CheckFactory;

$checkFactory = new CheckFactory();
$check = $checkFactory->create(CheckFactory::TYPE_HTTPKEYWORDS, [
    'host' => 'https://www.heise.de',
    'keywords' => ['heise online Themen', 'heise Security', '</html>']
]);

Ping检查

Ping检查是向一个给定主机发送一个ping。

use Phizzl\UptimeTools\Checks\CheckFactory;

$checkFactory = new CheckFactory();
$check = $checkFactory->create(CheckFactory::TYPE_PING, [
    'host' => 'www.gitub.com'
]);

TCP端口检查

你可以检查一个给定主机上的TCP端口是否打开。

use Phizzl\UptimeTools\Checks\CheckFactory;

$checkFactory = new CheckFactory();
$check = $checkFactory->create(CheckFactory::TYPE_TCP, [
    'host' => 'www.github.com',
    'port' => 80
]);

要执行检查,它们需要添加到一个桶中。一个桶可以等于你的应用程序。例如,一个Web服务器。你可能想测试它是否可ping通,TCP端口80是否打开,以及你是否在index的HTML标签中找到了关闭标签。

use Phizzl\UptimeTools\Buckets\Bucket;
use Phizzl\UptimeTools\Buckets\DispatchedBucket;
use Phizzl\UptimeTools\Checks\CheckFactory;
use Phizzl\UptimeTools\Checks\DispatchedCheck;

$bucket = new Bucket();
$checkFactory = new CheckFactory();

$bucket->getChecks()->addCheck($checkFactory->create(CheckFactory::TYPE_TCP, [
    'host' => 'www.mywebsite.local',
    'port' => 80
]));

$bucket->getChecks()->addCheck($checkFactory->create(CheckFactory::TYPE_HTTPKEYWORDS, [
    'host' => 'http://www.mywebsite.local',
    'keywords' => ['</html>']
]));

$bucket->getChecks()->addCheck($checkFactory->create(CheckFactory::TYPE_PING, [
    'host' => 'www.mywebsite.local'
]));

$dispatchedBucket = $bucket->run();

echo "Checks took {$dispatchedBucket->getDispatchTime()}s\n";
echo "--------------------------------------\n";
/* @var DispatchedCheck $dispatchedCheck */
foreach($dispatchedBucket->getSucceededDispatchedChecks() as $dispatchedCheck){
    echo "Success: " . get_class($dispatchedCheck->getContext()->getCheck()) . PHP_EOL;
    echo "Executed in: {$dispatchedCheck->getDispatchTime()}s\n";
    echo "--------------------------------------\n";
}

/* @var DispatchedCheck $dispatchedCheck */
foreach($dispatchedBucket->getFailedDispatchedChecks() as $dispatchedCheck){
    echo "Failed: " . get_class($dispatchedCheck->getContext()->getCheck()) . PHP_EOL;
    echo "Executed in: {$dispatchedCheck->getDispatchTime()}s\n";
    echo "Message: {$dispatchedCheck->getMessage()}\n";
    echo "--------------------------------------\n";
}

if($dispatchedBucket->getStatus() === DispatchedBucket::STATUS_SUCCESS){
    echo "All checks passed!\n";
    exit(0);
}
else{
    echo "Error occured!\n";
    exit(1);
}