Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou com um sistema que tem algumas coisas que se usa long polling, isso atrapalha tudo, qualquer botão que você clica (que faz uma requisição Ajax) vai demorar porque tem o long polling executando. O Ajax por padrão cria uma fila de requisições, quero que as requisições sejam executadas ao mesmo tempo, em paralelo. Por exemplo, estou eu mexendo no site, enquanto isso, eu mantenho uma requisição Ajax que segura o servidor por 20seg, se eu clico em qualquer coisa ou até mesmo vou para outra página, tenho que esperar essa requisição de 20seg acabar. Quero que dê para fazer diversas requisições ao mesmo tempo, igual o facebook. Alguém conhece alguma técnica? Alguma referência? Ouvi falar do when, mas não é isso que preciso.
Não é o ajax que cria fila de requisições. É o apache que da um lock na sessão para não haver concorrência. Pode ler mais sobre condição de corrida.
Também sobre o session lock:
https://www.leaseweb.com/labs/2014/08/session-locking-non-blocking-read-sessions-php/
Pra evitar isso, transforme sua sessão, após realizar todas as modificações necessárias, em somente leitura. Use a função session_write_close.
Aqui há um bom exemplo:
http://konrness.com/php5/how-to-prevent-blocking-php-requests/
Gabriel Heming, obrigado! a função session_write_close(); deu certo. Mas eu não entendi muito bem o funcionamento dela... Eu já estava desistindo desse problema e indo para o websocket, voc~e acha que vale mais apena?
Desculpe não poder te ajuda tanto, mas acho que você está querendo algo tipo websocket pesquise sobre isso é um método melhor que long Polling .