Постоянно запускать Phirehose на микроэкземпляре EC2

Я хочу бежать Phirehose, API потокового вещания php на Amazon EC2 для непрерывной работы. Я использовал следующий код

<?php
// TweetStream.php
require_once "OauthPhirehose.php";
require_once "../ajax/common.php";

const table_name = "tweets";

set_time_limit(0);

class Consumer extends OauthPhirehose {
private $cobj; // mysqli object

protected $count = 0;

public function __construct($a, $b, $c) {
parent::__construct($a, $b, $c);
$this->cobj = new mysqli(db_host, db_user, db_pass, db_name);
}

public function enqueueStatus($status) {
$data = json_decode($status);

$cond = !isset($data->delete) && !isset($data->warning);
$cond = $cond && !($data->id == 0 || trim($data->user->name) == "" || trim($data->text) == "" || $data->geo == NULL);
if($cond) {
++$this->count;

echo str_pad($this->count, 12, " ", STR_PAD_LEFT).": Getting Tweet: ".$data->id_str." Inserting... ";

$id = $data->id_str;
$idi = $data->id;
$user = $data->user->name;
$coord = $data->coordinates->coordinates;
$lat = $coord[1];
$lng = $coord[0];
$tweet = $data->text;

$stmt = $this->cobj->prepare("insert into ".table_name." values(?, ?, ?, ?, ?)");
$stmt->bind_param("ssdds", $id, $user, $lat, $lng, $tweet);
$stmt->execute();

if($stmt->errno) echo "skipped: ".$stmt->error;
else echo "done. \n";

$stmt->close();
}
}
}

define("TWITTER_CONSUMER_KEY", "******");
define("TWITTER_CONSUMER_SECRET", "******");

define("OAUTH_TOKEN", "******");
define("OAUTH_SECRET", "********");

$sc = new Consumer(OAUTH_TOKEN, OAUTH_SECRET, Phirehose::METHOD_SAMPLE);
$sc->setLang("en");
$sc->consume();
?>

Как только я загружаю этот код в экземпляр EC2, я открываю ssh с помощью Putty и выполняю следующие команды

$ cd /var/www/html/service
$ nohup php TweetStream.php &

Примерно через 5 минут, когда я бегу top -p $(pgrep -d',' php)Я получаю следующее

top - 06:38:52 up 1 day,  4:04,  1 user,  load average: 64.61, 66.82, 65.65
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
Cpu(s):100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    606528k total,   599552k used,     6976k free,     1172k buffers
Swap:        0k total,        0k used,        0k free,    29660k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
11902 ec2-user  20   0  438m 9096 1792 S  0.0  1.5   0:06.18 php

Я могу понять, что он работал около 6 минут и перешел в состояние сна. Могу ли я узнать, что мне не хватает?

Как сделать так, чтобы этот процесс непрерывно работал в инстансе Amazon EC2? Пожалуйста, помогите мне, друзья.

Кстати, mysqli подключается к экземпляру RDS, работающему в Amazon.

0

Решение

Неважно, бег с screen вместо nohup сделал трюк.
Я следовал за учебником здесь: https://unix.stackexchange.com/questions/479/keep-ssh-sessions-running-after-disconnection

0

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

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

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