phpdaemon

package
v0.15.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 29, 2020 License: GPL-3.0 Imports: 9 Imported by: 1

README

phpdaemon

phpdaemon is an asynchronous server-side framework for Web and network applications implemented in PHP using libevent.

This module collects phpdaemon workers statistics via http.

Requirements

  • phpdaemon with enabled http server.
  • statistics should be reported in json format.

Charts

It produces the following charts:

  • Workers in workers
  • Alive Workers State in workers
  • Idle Workers State in workers
  • Uptime in seconds

Configuration

Here is an example for 2 instances:

jobs:
  - name: local
    url : http://127.0.0.1:8509/FullStatus
      
  - name: remote
    url : http://10.0.0.1:8509/FullStatus

For all available options please see module configuration file.

phpdaemon configuration

Instruction from @METAJIJI

For enable phpd statistics on http, you must enable the http server and write an application.

Application is important, because standalone application ServerStatus.php provides statistics in html format and unusable for netdata.

/opt/phpdaemon/conf/phpd.conf

path /opt/phpdaemon/conf/AppResolver.php;
Pool:HTTPServer {
    privileged;
    listen '127.0.0.1';
    port 8509;
}

/opt/phpdaemon/conf/AppResolver.php

<?php

class MyAppResolver extends \PHPDaemon\Core\AppResolver {
    public function getRequestRoute($req, $upstream) {
        if (preg_match('~^/(ServerStatus|FullStatus)/~', $req->attrs->server['DOCUMENT_URI'], $m)) {
            return $m[1];
        }
    }
}

return new MyAppResolver;

/opt/phpdaemon/conf/PHPDaemon/Applications/FullStatus.php

<?php
namespace PHPDaemon\Applications;

class FullStatus extends \PHPDaemon\Core\AppInstance {
    public function beginRequest($req, $upstream) {
        return new FullStatusRequest($this, $upstream, $req);
    }
}

/opt/phpdaemon/conf/PHPDaemon/Applications/FullStatusRequest.php

<?php
namespace PHPDaemon\Applications;

use PHPDaemon\Core\Daemon;
use PHPDaemon\HTTPRequest\Generic;

class FullStatusRequest extends Generic {
    public function run() {
        $stime = microtime(true);
        $this->header('Content-Type: application/javascript; charset=utf-8');

        $stat = Daemon::getStateOfWorkers();
        $stat['uptime'] = time() - Daemon::$startTime;
        echo json_encode($stat);
    }
}

Troubleshooting

Check the module debug output. Run the following command as netdata user:

./go.d.plugin -d -m phpdaemon

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Chart

type Chart = module.Chart

Chart is an alias for module.Chart

type Charts

type Charts = module.Charts

Charts is an alias for module.Charts

type Config

type Config struct {
	web.HTTP `yaml:",inline"`
}

Config is the PHPDaemon module configuration.

type Dims

type Dims = module.Dims

Dims is an alias for module.Dims

type FullStatus

type FullStatus struct {
	WorkerState `stm:""`
	Uptime      *int64 `stm:"uptime"`
}

FullStatus FullStatus.

type PHPDaemon

type PHPDaemon struct {
	module.Base
	Config `yaml:",inline"`
	// contains filtered or unexported fields
}

PHPDaemon PHPDaemon module.

func New

func New() *PHPDaemon

New creates PHPDaemon with default values.

func (PHPDaemon) Charts

func (p PHPDaemon) Charts() *Charts

Charts creates Charts.

func (*PHPDaemon) Check

func (p *PHPDaemon) Check() bool

Check makes check.

func (PHPDaemon) Cleanup

func (PHPDaemon) Cleanup()

Cleanup makes cleanup.

func (*PHPDaemon) Collect

func (p *PHPDaemon) Collect() map[string]int64

Collect collects metrics.

func (*PHPDaemon) Init

func (p *PHPDaemon) Init() bool

Init makes initialization.

type WorkerState

type WorkerState struct {
	// Alive is sum of Idle, Busy and Reloading
	Alive    int64 `stm:"alive"`
	Shutdown int64 `stm:"shutdown"`

	// Idle that the worker is not in the middle of execution valuable callback (e.g. request) at this moment of time.
	// It does not mean that worker not have any pending operations.
	// Idle is sum of Preinit, Init and Initialized.
	Idle int64 `stm:"idle"`
	// Busy means that the worker is in the middle of execution valuable callback.
	Busy      int64 `stm:"busy"`
	Reloading int64 `stm:"reloading"`

	Preinit int64 `stm:"preinit"`
	// Init means that worker is starting right now.
	Init int64 `stm:"init"`
	// Initialized means that the worker is in Idle state.
	Initialized int64 `stm:"initialized"`
}

WorkerState represents phpdaemon worker state.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL