|
|
|
|
#!/usr/bin/php -Cq
|
|
|
|
|
<?php
|
|
|
|
|
error_reporting(E_ALL);
|
|
|
|
|
ini_set('display_errors', 1);
|
|
|
|
|
|
|
|
|
|
include('util/util.php');
|
|
|
|
|
include '/var/lib/asterisk/scripts/integracao/constServerIntegra.php';
|
|
|
|
|
require '/var/lib/asterisk/scripts/integracao/localDataBase.php';
|
|
|
|
|
require '/var/lib/asterisk/scripts/integracao/serverFunctions.php';
|
|
|
|
|
require '/var/lib/asterisk/scripts/integracao/dbAbstract.php';
|
|
|
|
|
require '/var/lib/asterisk/scripts/integracao/shm.php';
|
|
|
|
|
|
|
|
|
|
$scrpt = $argv[0];
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Verifica processos que n<EFBFBD>o foram encerrados corretamente.
|
|
|
|
|
*/
|
|
|
|
|
$shmSystemKey = ShmGetId(SHM_IPC_FILE);
|
|
|
|
|
$memoryAllocated = Malloc();
|
|
|
|
|
|
|
|
|
|
$shmKey = ShmExist($shmSystemKey);
|
|
|
|
|
if (!$shmKey) {
|
|
|
|
|
$msg = "N<EFBFBD>o existe memoria criada para o servidor";
|
|
|
|
|
__logStr("LiberaProcessos", $msg, $scrpt, true);
|
|
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* A memoria j<EFBFBD> foi criada tenta abrir o bloco previamente alocado.
|
|
|
|
|
*/
|
|
|
|
|
$shmKey = ShmOpen($shmSystemKey, SHM_ACESS_MODE, SHM_ACESS_PERMISSION, $memoryAllocated);
|
|
|
|
|
if (!$shmKey) {
|
|
|
|
|
$msg = "N<EFBFBD>o foi poss<EFBFBD>vel abrir a memoria do servidor";
|
|
|
|
|
__logStr("LiberaProcessos", $msg, $scrpt, true);
|
|
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Percorre processos verificando os status, se estiverem
|
|
|
|
|
* diferentes de PROCESSESS_WAIT verifica se esta gravado
|
|
|
|
|
* na tabela ast_bilhetes indicando que o processo j<EFBFBD> foi
|
|
|
|
|
* encerrado e deve ser liberado.
|
|
|
|
|
*/
|
|
|
|
|
for ($i = 0; $i < MEMORY_SEGMENT_COUNT; $i++) {
|
|
|
|
|
$status = ShmRead($shmKey, $i, 1);
|
|
|
|
|
|
|
|
|
|
if ($status != PROCESSESS_WAIT) {
|
|
|
|
|
$data = trim(ShmRead($shmKey, GetOffSet($i), MEMORY_SEGMENT_WITH));
|
|
|
|
|
$dados = explode('|', $data);
|
|
|
|
|
|
|
|
|
|
$query = sprintf('select count(*) as num_reg from pbx_bilhetes where uniqueid = %s', QuotedStr(trim($dados[0])));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
$msg = sprintf("Erro ao consultar o processo! %s", $query);
|
|
|
|
|
__logStr("LiberaProcessos", $msg, $scrpt, true);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
if ($row[0]) {
|
|
|
|
|
if (!ShmWrite($shmKey, PROCESSESS_WAIT, $i)) {
|
|
|
|
|
$msg = sprintf("N<EFBFBD>o foi poss<EFBFBD>vel liberar a memoria do servidor! id: %s Uid: %s", $i, $dados[0]);
|
|
|
|
|
__logStr("LiberaProcessos", $msg, $scrpt, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
?>
|