phpbook/console

1.1.8 2018-08-07 21:49 UTC

This package is auto-updated.

Last update: 2024-05-10 23:40:11 UTC


README

About Console

  • A PHP library to run asynchronous task in console.
  • Requires PHP Extension COM on Windows.

Composer Install

composer require phpbook/console

Declare Configurations

<?php

/********************************************
* 
*  Declare Configurations
* 
* ******************************************/

//you php bin path
//Default "php"
\PHPBook\Console\Configuration\Request::setPHPPath('php/bin/path');

//the php script console file, read below the link [Start Application Console]
//Default null
\PHPBook\Console\Configuration\Request::setConsoleScriptPath(__DIR__ . DIRECTORY_SEPARATOR . 'console.php');

//Controllers path, the phpbook will load all controllers by folders recursively inside
//Default null. But its required to set if you want use phpbook console.
\PHPBook\Console\Configuration\Request::setControllersPathRoot('controllers');

//Controllers proxies path, the phpbook will generate the proxies based on controllers
//Default null. But its required to set if you want use phpbook console.
\PHPBook\Console\Configuration\Request::setProxiesPathRoot('proxies');

//Controllers proxies namespace, the phpbook will generate the proxies classes using this namespace
//Default null. But its required to set if you want use phpbook console.
\PHPBook\Console\Configuration\Request::setProxiesNamespace('App\Controllers');
Declare Console Controller

PHPBook Console uses docs notations to declare request resources.

<?php

/***************************************************
* 
*  Declare Console Controller
* 
* *************************************************/

class ConsoleController {

	/**
	 * @PHPBookConsoleRequestResource{
	 *      "setName": "'greetings'"
	 * 		"setNotes": "'Any important note'"
	 * 		"setArguments": "['name', 'age']"
	 * }
	 */
	public function runConsole($name, $age) {
		
		//your console here

		//when a parameter is not defined in prompt the value will be null.
		$name; $age;

		//set the time to the script finish, zero to unlimited time
		//if you set again, the current timer reset the counter to zero, and starts counting again
		\PHPBook\Console\Script::setSecondsScriptLimits(0);

		//you can check the O.S.
		switch(\PHPBook\Console\Script::getOS()) {
			case \PHPBook\Console\Script::$OS_WINDOWS:

				break;
			case \PHPBook\Console\Script::$OS_UNIX;

				break;
		};

		//you can write script line with auto break line
		\PHPBook\Console\Script::echoLine('Hello Jhon');

		//you can write a break line, but echoLine auto breaks the line also
		\PHPBook\Console\Script::echoBreakLine();

		//you can write a table
		\PHPBook\Console\Script::echoTable(
			'My Table Label',
			['name' => 'Name', 'age' => 'Age'],
			[
				['name' => 'Jhon', 'age' => 20], 
				['name' => 'Ana', 'age' => 21]
			]
		);

		//you can kill the script process
		\PHPBook\Console\Script::kill();

		//you can call another asynchronous console
		$run = \PHPBook\Console\Console::run('resource-name', ['parameter-one', 'parameter-two']);

		if ($run) {
			//start success
		} else {
			//start error
		};

	}

}
Console Run Resource
<?php

/***************************************************
* 
*  Console Run Resource
* 
* *************************************************/

//run a asynchronous console on php
$run = \PHPBook\Console\Console::run('resource-name', ['parameter-one', 'parameter-two']);

if ($run) {
	//start success
} else {
	//start error
};
Generate Request Proxies
<?php

/***************************************************
* 
*  Generate Request Proxies
* 
* *************************************************/

/* The Directory will be cleared recursively before generate, so you should have a unique folder to this proxies.*/

/* You must generate or re-generate de proxy file when create or change controllers notations */

/* You cannot start console without proxies */

\PHPBook\Console\Proxy::generate();

?>
Start Request Proxies
<?php

/***************************************************
* 
*  Start Request Proxies
* 
* *************************************************/

/* You must start proxies before start the console */

\PHPBook\Console\Proxy::start();

?>
Start Application Console
<?php

/***************************************************
* 
*  Start Application Console
* 
* *************************************************/

/* FILE console.php */

if (\PHPBook\Console\Script::isConsole()) {

	\PHPBook\Console\Console::start();

};

You can execute console with "php console.php" and all your available resources will be shown.

You can execute console with "php console.php resoure-name parameter-one parameter-two" to run a resource.

Scheduler

  • You need register the php console scripts inside your s.o. server environment scheduler. Each operating system and its server has its way to register.