forked from SimplesIP/pabx-app
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
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); |
|
} |
|
} |
|
} |
|
} |
|
?>
|
|
|