Reputation: 43
I am playing with multithreaded POST requests in PHP code.
As these requests can take a long time, I decided to multithread these POST requests to do things faster by using multiple connections.
At this moment I wrote scheduler in javascript that executes POST requests (with jQuery post command) to request_helper.php, and watch if there are up to 4 pending requests at the time. In theory I can get data 4 times faster.
I started to play with request_helper.php with that content:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'on');
sleep(20);
exit (0);
?>
and run 4 POST requests at the same time. and after 20 seconds, I got 4 POST responses. Great!
However if I add start_session() - which I need for checking if the user has permissions:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'on');
// always load or start session
session_start();
sleep(20);
exit (0);
?>
the response for first request takes 20 seconds, but for the second - 40 seconds, for the third 3 seconds - it looks like session_start could handle one request at the time. I actually lose multithreading.
Why this happens, how to do it better?
Upvotes: 3
Views: 63
Reputation: 1883
You can use sessions in this way but you need to unlock the session before sending the next request.
session_write_close();
Should do it.
Upvotes: 1