(int)($timeSend / 1000000)) { if (file_exists($procName) && ($result = CnvrtDecodeData($procName, true, true)) !== false) { list($st, $msg) = $result; /* * Apaga o arquivo ja processado. */ CnvrtKillProcess($procName, $src, false); if (!$st) { GeraExcept($msg); } return $st; } usleep($sleepTime); $timeSend += $sleepTime; } /* * Mata processsos. */ CnvrtKillProcess($procName, $src); /* * Timeout. */ GeraExcept("Não foi possível converter o arquivo, tempo excedido![$src]"); } catch (Exception $e) { trigger_error($e->getMessage(), E_USER_NOTICE); return false; } } function CnvrtEncodeData($data, $fileName = null, $silent = false) { try { if (!$data = base64_encode(serialize($data))) { GeraExcept("Não foi possível codificar informações de conversão!"); } if (is_null($fileName)) { return $data; } if (!file_put_contents($fileName, $data)) { GeraExcept("Não foi possível enviar informações de conversão!"); } return true; } catch (Exception $e) { if ($silent) { trigger_error($e->getMessage(), E_USER_NOTICE); return false; } GeraExcept($e->getMessage()); } } function CnvrtDecodeData($dataSource, $file = true, $silent = false) { try { /* * Tenta ler o arquivo. */ if (!$data = ($file ? file_get_contents($dataSource) : $dataSource)) { GeraExcept("Não foi possível ler as informações de conversão!"); } if (!$data = base64_decode($data)) { GeraExcept("Não foi possível decodificar as informações de conversão!"); } if (!$data = unserialize($data)) { GeraExcept("Não foi possível recuperar as informações de conversão!"); } /* * Verifica se o retorno é um array, caso seja e $onlyValus = true * retorna apenas os valores, para faciliatar o uso da funcao list. */ return $data; } catch (Exception $e) { if ($silent) { trigger_error($e->getMessage(), E_USER_NOTICE); return false; } GeraExcept($e->getMessage()); } } function CnvrtLog($log) { global $pathLog; /* * Registra no arquivo de log do sistema. */ WriteLog(trim($log) . "\n", $pathLog); } function CnvrtKillProcess($procName, $src, $killProc = true) { $pidFile = sprintf( "%s.pid", $procName ); if ( $killProc ) { /* Esse arquivo é gerado pelo daemon cnvrt */ $pidFile_content = file_get_contents( $pidFile ); if( $pidFile_content !== false ){ exec( sprintf("kill -9 %s", $pidFile_content) ); } else{ // Envia log, não foi possível usar cnvrt CnvrtLog( "Não foi possivel obter o pid em $pidFile" ); } $pid = CnvrtProcessId( 'ffmpeg', $src ); if($pid != 0){ // Diferente de zero, o zero terminará o processo PHP exec( sprintf( "kill -9 %s", $pid )); } } unlink( $procName ); unlink( $pidFile ); } function CnvrtProcessId($process, $srcId) { $out = null; exec(sprintf('ps x| grep %s', $srcId), $out); foreach ($out as $ret) { if (strpos($ret, $process) !== false) { return soNumero(substr($ret, 0, strpos($ret, ' '))); } } return 0; } function _CnvrtWirteData($data, $prcName, $dst=false) { CnvrtEncodeData($data, $tmpFile = sprintf("%s.tmp", $prcName)); if ($dst) { exec(sprintf('chown pbx:pbx %s', $dst)); } exec(sprintf('chown pbx:pbx %s', $tmpFile)); exec(sprintf('mv %s %s', $tmpFile, $prcName)); } function _CnvrtPrepareData($status, $msg, $out = '', $ret = '') { return array($status, $msg, !$out ? ($status ? 'OK' : 'ER') : $out, !$ret ? ($status ? 'OK' : 'ER') : $ret); } function _CnvrtRegPid($prcName) { $tmpFile = sprintf("%s.pid", $prcName); file_put_contents($tmpFile, getmypid()); exec(sprintf('chown pbx:pbx %s', $tmpFile)); }