Today I came across one situation.
I am using file_get_contents
to get token from a file for a user.
$data=file_get_contents("http://example.com/aaa.php?user=tester&akey=abcdef1234");
$dec=json_decode($data,true);
$tokenid=$dec['message']['result']['tokenid'];
Using the token i will call another file to get details;
$data=file_get_contents("http://example.com/bbb.php?user=tester&token=".$tokenid);
the problem is sometimes i am not getting tokenid, after refreshing the page i get it.
There is no problem in aaa.php its working fine.
I doubt whether php is not waiting for the response of the file_get_contents
of token before going to the second file_get_contents(asynchronous);
I have tried with curl too but sometimes I am not getting tokenid. I haven't faced these kind of issues.
file_get_contents
is synchronous. You can getFALSE
sometimes because of different reasons like network fail, DNS fail etc.Use curl instead: it's faster and more customizable. You can wait for good response recursive if you need 100% success.
Definitely not a question of synchronous vs. asynchronous. But as is debugging is pretty impossible. Try something like this. The
die
statements are ugly but illustrates the validation you might want to incorporate...A guess might be your token sometimes contains 'special' characters that need to be escaped.