|
|
|
|
#!/usr/bin/php -q
|
|
|
|
|
<?php
|
|
|
|
|
/* * *****************************************************************************************
|
|
|
|
|
* Data: 10/06/2019.
|
|
|
|
|
* Autor: Amarildo Pereira
|
|
|
|
|
* Descri<EFBFBD><EFBFBD>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<EFBFBD>o.
|
|
|
|
|
* ***************************************************************************************** */
|
|
|
|
|
|
|
|
|
|
error_reporting(E_ALL);
|
|
|
|
|
ini_set('display_errors', 1);
|
|
|
|
|
ini_set("memory_limit", "512M");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Inclui fun<EFBFBD>oes gen<EFBFBD>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 <EFBFBD> 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<EFBFBD>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<EFBFBD>o.
|
|
|
|
|
*/
|
|
|
|
|
list($src, $dst, $type, $name) = CnvrtDecodeData($fileName);
|
|
|
|
|
/*
|
|
|
|
|
* Seleciona o arquivo que fara a convers<EFBFBD>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<EFBFBD><EFBFBD>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<EFBFBD>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;
|
|
|
|
|
}
|
|
|
|
|
?>
|