Upstart ReactPHP-скрипт — AWS EC2 ElasticbeanStalk

У меня есть сценарий php, который выполняется в бесконечном цикле с использованием цикла ReactPHP и HTTPServer

Теперь я использую AWS Elastic Beanstalk Worker, который считывает очередь SQS, для которой требуется HTTPServer на порту 80. Вот мой PHP-скрипт:

<?php

/* loading the base configuration files and defines */
require_once 'base/bootstrap.php';

$loop   = React\EventLoop\Factory::create();
$socket = new React\Socket\Server($loop);
$http   = new React\Http\Server($socket);

$i = 0;
$j = 0;

$api = BaseClass::initiate(); // the initially loaded class setting up the environment

/**
* The $loop React Event Loop will make sure that $api BaseClass required to be alive
* is up-to-date managing the Environment
*/
$loop->addPeriodicTimer(3, function ($timer) use (&$i, &$j, $loop, &$api) {
try {

if ($i >= rand(300, 400)) {
/* Refresh the Environment if any DB changes happen, like new clients added, etc. */
$api = BaseClass::initiate();
}

/**
* I Do my Work Here
*/

} catch (Exception $e) {
/**
* Error Handling
*/
}
$i++;
$j++;
});

/**
* The $http React HTTP Server will listen to the SQS Queue and perform actions accordingly
*/
$http->on('request', function (React\Http\Request $request, React\Http\Response $response) use (&$api) {
$request->on('data', function ($data) use (&$api, $request, $response) {
try {
$postData = json_decode($data, TRUE);

/**
* I process the Post Data here using $api loaded Class
*/

} Catch (Exception $e) {
/* Send an Error Message to the Queue */
/**
* Error Handling
*/
}
});
});

$socket->listen(80);
$loop->run();

Причина, по которой я смотрю на эту структуру, заключается в том, что $ api открывает соединение с сокетом и должен быть активным для обработки сервером $ http.

nohup php /var/app/current/server.php & просто отлично работает, однако, я смотрю на создание выскочки службы

Мой сценарий UpStart выглядит следующим образом: /etc/init/myscript.conf

#Info
start on startup
stop on shutdown
respawn
php /var/app/current/server.php

который не работает. Не уверен, где я иду не так.

Какие-либо предложения?

0

Решение

Замените свой /etc/init/myscript.conf с этим

# Info
description "myscript name"author      "Yourself"
# Events
start on startup
stop on shutdown

# Automatically respawn
respawn
respawn limit 20 5

# Run the script!
# Note, in this example, if your PHP script returns
# the string "ERROR", the daemon will stop itself.
script
[ $(exec /usr/bin/php -f /var/app/current/server.php) = 'ERROR' ] && ( stop; exit 1; )
end script

затем начните с

sudo service myscript start
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]