¿Por qué session_start causa un tiempo de espera cuando una secuencia de comandos llama a otra secuencia de comandos utilizando curl

StackOverflow https://stackoverflow.com/questions/252907

  •  05-07-2019
  •  | 
  •  

Pregunta

Tengo dos scripts PHP, ambos usando la misma sesión llamando a session_name ('MySessID') .

Cuando el primer script llama al segundo script utilizando curl, el segundo script se bloquea cuando se llama a session_start () .

¿Por qué sucedería esto?

¿Fue útil?

Solución 2

No entiendo totalmente por qué sucede esto, pero lo resolví.

Este error describe el mismo problema que tengo. Tengo una secuencia de comandos que se publica en otra secuencia de comandos, ambas usan la misma sesión , que aparentemente detiene PHP.

Por lo tanto, antes de hacer todo el script de curl post, llamo a la función session_commit , finalizando así la sesión de scripts de llamada y habilitando el script llamado para reiniciar la sesión.

Golpe ...

Otros consejos

Desde el manual de php

http://php.net/manual/en/function. session-write-close.php

Los datos de la sesión generalmente se almacenan después de que su script termine sin la necesidad de llamar a session_write_close (), pero como los datos de la sesión están bloqueados para evitar escrituras concurrentes, solo un script puede operar en una sesión en cualquier momento . Al usar marcos junto con sesiones, experimentará que los marcos se cargan uno por uno debido a este bloqueo. Puede reducir el tiempo necesario para cargar todos los marcos terminando la sesión tan pronto como se realicen todos los cambios en las variables de la sesión.

Por lo tanto, no puede hacer que 2 scripts utilicen la misma sesión a la misma hora.

También me mordió esto. Lo arreglé gracias a la información provista en stackoverflow.

Tenía dos páginas, ambas tenían " session_start () " en la parte superior y el primero fue llamar al segundo con curl para que yo pudiera POSTAR variables al segundo script después de la validación. El servidor web se colgó hasta que agregué " session_write_close () " ;.

A continuación se muestra el código:

// IMPORTANT (OR ELSE INFINITE LOOP) - close current sessions or the next page will wait FOREVER for a write lock.
session_write_close();

// We can't use GET because we can't display the password in the URL.
$host = 

También me mordió esto. Lo arreglé gracias a la información provista en stackoverflow.

Tenía dos páginas, ambas tenían " session_start () " en la parte superior y el primero fue llamar al segundo con curl para que yo pudiera POSTAR variables al segundo script después de la validación. El servidor web se colgó hasta que agregué " session_write_close () " ;.

A continuación se muestra el código:

<*>SERVER['HTTP_HOST']; $uri = rtrim(dirname(

También me mordió esto. Lo arreglé gracias a la información provista en stackoverflow.

Tenía dos páginas, ambas tenían " session_start () " en la parte superior y el primero fue llamar al segundo con curl para que yo pudiera POSTAR variables al segundo script después de la validación. El servidor web se colgó hasta que agregué " session_write_close () " ;.

A continuación se muestra el código:

<*>SERVER['PHP_SELF']), '/\\'); $url = "http://$host$uri/formPage2.php?"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); //append URL curl_setopt($ch, CURLOPT_POST,TRUE);//We are using method POST curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(

También me mordió esto. Lo arreglé gracias a la información provista en stackoverflow.

Tenía dos páginas, ambas tenían " session_start () " en la parte superior y el primero fue llamar al segundo con curl para que yo pudiera POSTAR variables al segundo script después de la validación. El servidor web se colgó hasta que agregué " session_write_close () " ;.

A continuación se muestra el código:

<*>REQUEST, '', "&"));//append parameters curl_exec($ch); // results will be outputted to the browser directly curl_close($ch); exit();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top