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.
 
 
 
 
 
 

70 lines
2.2 KiB

#!/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ão foram encerrados corretamente.
*/
$shmSystemKey = ShmGetId(SHM_IPC_FILE);
$memoryAllocated = Malloc();
$shmKey = ShmExist($shmSystemKey);
if (!$shmKey) {
$msg = "Não existe memoria criada para o servidor";
__logStr("LiberaProcessos", $msg, $scrpt, true);
exit();
}
/*
* A memoria já foi criada tenta abrir o bloco previamente alocado.
*/
$shmKey = ShmOpen($shmSystemKey, SHM_ACESS_MODE, SHM_ACESS_PERMISSION, $memoryAllocated);
if (!$shmKey) {
$msg = "Não foi possí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á 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ão foi possível liberar a memoria do servidor! id: %s Uid: %s", $i, $dados[0]);
__logStr("LiberaProcessos", $msg, $scrpt, true);
}
}
}
}
?>