PABX da Simples IP
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

168 lines
4.9 KiB

#!/usr/bin/php -q
<?php
/* * *****************************************************************************************
* Data: 10/06/2019.
* Autor: Amarildo Pereira
* Descrição: Convercao de arquivos
* Objetivo: O servico tera a funcao de converter arquivos usando o usuarios root e entregando
* o arquivo convertido para o usuarios pbx.
* Funcoes:
* -CnvrtLog -> Grava log de erros gerados pelo serviço.
* ***************************************************************************************** */
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set("memory_limit", "512M");
/*
* Inclui funçoes genéricas.
*/
include("util/constantes.php");
include("util/util.php");
include("util/cnvrtFunctions.php");
/*
* Registra o numero de erros em uma operacao.
*/
$numErros = 0;
/*
* Para rodar como um processo normal é preciso passar "N" como primeiro parametro.
*/
$notDaemon = isset($argv[1]) && ( strtoupper($argv[1]) === 'N');
$notDaemon = true;
/*
* Mostra o help quando passodo --help no primeiro argumento.
*/
GetHelp();
/*
* Inicializa o daemom quando N não for informado.
*/
GetDaemon($notDaemon);
try {
declare(ticks = 1);
$statusSignal = 0;
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
pcntl_signal(SIGUSR1, "sig_handler");
pcntl_signal(SIGINT, "sig_handler");
CnvrtLog(sprintf("Server Start: %s [ok]\n", date("Y-m-d H:i:s")));
$start = 0;
while (true) {
try {
foreach (glob(CNVRT_BASE . "*.snd") as $fileName) {
try {
/*
* Carrega os dados de conversão.
*/
list($src, $dst, $type, $name) = CnvrtDecodeData($fileName);
/*
* Seleciona o arquivo que fara a conversão.
*/
switch ($type) {
case CNVRT_WAV_MP3:
case CNVRT_WAV_ULAW:
case CNVRT_MP3_ULAW:
exec(sprintf('%s %s > /dev/null 2>&1 &', CNVRT_CONVERT_AUDIO, CnvrtEncodeData(array($src, $dst, $type, $name, $pathLog))));
break;
case CNVRT_FILE_CP:
case CNVRT_FILE_MV:
case CNVRT_FILE_RM:
case CNVRT_FILE_EXISTS:
case CNVRT_FILE_SIZE:
case CNVRT_EXEC:
exec(sprintf('%s %s > /dev/null 2>&1 &', CNVRT_FILE, CnvrtEncodeData(array($src, $dst, $type, $name, $pathLog))));
break;
default:
break;
}
} catch (Exception $ex) {
$numErros++;
CnvrtLog($ex->getMessage());
}
/*
* Elimina o arquivo de requisicao de dados
*/
unlink($fileName);
}
} catch (Exception $ex) {
$numErros++;
CnvrtLog($ex->getMessage());
}
/*
* Verifica se o processo deve ser encerrado
*/
if (sig_status())
break;
/*
* Tempo do ciclo de atualizações.
*/
usleep(CNVRT_TEMPO_CICLO);
$start++;
}
CnvrtLog(sprintf("Server Stop: %s [ok]\n", date("Y-m-d H:i:s")));
} catch (Exception $ex) {
CnvrtLog($ex->getMessage());
}
function GetDaemon($notDaemon) {
/*
* Se o script não for chamado com daemon sai sem executar nada.
*/
if ($notDaemon) {
return 0;
}
$pid = pcntl_fork();
if ($pid) {
exit(0); //success
}
// posix_setsid();
}
function GetHelp() {
global $argc, $argv;
$arg = isset($argv[1]) ? $argv[1] : '';
if ($argc && ((stripos($arg, '--h') !== false) || (stripos($arg, '-h') !== false) || (stripos($arg, '/h') !== false))) {
return displayUsage();
}
}
function displayUsage() {
echo "-------------------------------------------------------------------------------------------------------\n";
echo "- Servico de conversao de arquivos! -\n";
echo "-------------------------------------------------------------------------------------------------------\n";
echo "- Para rodar como um processo normal passe \"N\" como primeiro argumento:\"./amid.php N\"! -\n";
echo "- Para rodar como Daemon nao passe nenhum argumemento argumento:\"./amid.php \"! -\n";
echo "-------------------------------------------------------------------------------------------------------\n";
echo "\n";
exit(0);
}
function sig_handler($signo) {
global $statusSignal;
$statusSignal = 1;
}
function sig_status() {
global $statusSignal;
pcntl_signal_dispatch();
return $statusSignal;
}
?>