Pesquisar

Desenvolvimento Web

22/05/2021 às 08:18

Descrição do Projeto:

Um do meu sistema processo que funciona da seguinte forma.

São aberta 10 requisições para um webservice via multicurl em PHP 5.6 simples.

A requisição é para um webservice em jaon que pode voltar result = OK ou NOK.

O multicurl dá um timeoute 40 segundos, e depois pego resultados e confiro se voltou alguum resultado OK.

Neste meio tempo, algumas requisições voltaram OK, algumas NOK e algumas não vão ser capturadas pois não terminaram

O que queria é que quando alguma dessas requisições, neste meio tempo de 40 segundos, voltasse OK, que ele pegasse imediatamente o resultado dele (sem esperar esse timeout, e cancelasse as demais requisições.

$qtde = 10;
if(isset($_GET['qtde'])){
$qtde = $_GET['qtde'];
}
if($qtde<1){
echo "Nada a Requisitar";
exit();
}
$multiCurl = array();
$result = array();
$mh = curl_multi_init();
for ($i = 1; $i <= $qtde; $i++) {
$fetchURL = TURBO_URL.'/wsemquestao';
debug($fetchURL);
$multiCurl[$i] = curl_init();
curl_setopt($multiCurl[$i], CURLOPT_URL,$fetchURL);
curl_setopt($multiCurl[$i], CURLOPT_HEADER,0);
curl_setopt($multiCurl[$i], CURLOPT_RETURNTRANSFER,1);
curl_setopt($multiCurl[$i], CURLOPT_TIMEOUT, TIMEOUT_WAITING_TURBO_CLIENT);
curl_multi_add_handle($mh, $multiCurl[$i]);

$index=null;
$laco = 0;
do {
curl_multi_exec($mh,$index);

} while($index > 0);

foreach($multiCurl as $k => $ch) {

try {

$result[$k] = curl_multi_getcontent($ch);
debug($result[$k]);//var_dump(curl_multi_getcontent($ch));
$o = json_decode($result[$k]);

if(@$o->status === true){
$result = json_encode($o, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
$index = 0;

VAR_DUMP($result);

exit();
break;

}

} catch (Exception $e) {
continue;
}

}
// close
curl_multi_close($mh);

}

Habilidades desejadas:

PHP PHP5

Atividades do cliente nesse projeto:

Última visualização: 16/07/2021 às 15:02

Última interação: 24/05/2021 às 15:58

Informações adicionais

Categoria: Web, Mobile & Software
Subcategoria: Desenvolvimento Web
Orçamento: Aberto
Nível de experiência: Intermediário
Visibilidade: Público
Propostas: 3
Propostas excluídas: 2
Interessados: 3
Valor Mínimo: R$ 50,00

Cliente

Freelancer vencedor

Propostas (1)
  • Freelancer novo Promovida Aceita Aceita Rejeitada

    Submetido: | Oferta: Privado | Duração estimada: Privado

Nenhuma proposta foi encontrada.

Carregando...
Projetos semelhantes no 99Freelas

Desenvolver front-end para CRM - Procuramos um desenvolvedor front-end para criar a interface de um CRM com cerca de 10 telas, seguindo o design fornecido pelo web designer. O profissional trabalhará em conjunto com nosso d...

Edição em site WordPress e Elementor - Adicionar produtos, mudar textos e fotos, e outros detalhes relevantes para finalizar o projeto. É necessário saber usar o WordPress e o Elementor.

Correção de bug em formulário de sistema web - Boa noite! Estou desenvolvendo um sistema em HTML, CSS, JS, Bootstrap, back end PHP e banco MySQL. Tem um modal que é responsável por editar o endereço de um cliente já ...

Remodelar admin com suporte a idiomas - Laravel - Descrição do projeto: Precisamos de um programador Laravel para modificar o Admin, adicionando suporte a idiomas. O Admin está em uma estrutura básica, e agora vamos pr...

Check-out de carrinho de compras em Flutter - Descrição do projeto: Preciso de um profissional para fazer o check-out em Flutter de um carrinho de compras para um sistema de pedidos de delivery, contendo as seguintes informa&cced...

Carregando...

Carregando...

Pesquisar

FREELANCERS
PROJETOS
Ocorreu um erro inesperado. Caso o erro persista, entre em contato conosco através do e-mail suporte@99freelas.com.br.