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

Loja web para reserva de equipamentos para locação para empresas - Desenvolver uma página web tipo loja online para o mock-up de um app mobile que servirá para permitir que o usuário cadastrado faca a reserva de um equipamento (notebooks, ve&i...

Criação de site futurístico, com imagens 3D e interativo - Você consegue criar um site interativo com imagens 3D, futurístico, como se fosse esses abaixo: https://youtu.be/eS-44lSszFI?si=JiFJyx0tMeype2WS Irei fornecer outros exemplos de sites...

Converter API no Laravavel 10 para Array - Olá Devs, preciso de alguém com experiência em laravel para um job. Estou tendo uma dificuldade para converter uma api em um array por isso quero sua ajuda, para maiores detalh...

Desenvolvimento de marketplace - multivendedor - Criação de ecommerce - plataforma web Criação de plataforma para validação de MVP. Após validação haverá desenvolvimento comp...

Melhorar e finalizar sistema por comando de voz - Preciso de um programador para implementar/melhorar e finalizar um sistema de comando por voz para um jogo com algumas funcionalidades específicas. Seria para substituir o uso do mouse para ...

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.