I know php doesn't give timeout option since it is running from server side. But my logic needs timeout. Please solve this case
My PHP: login.php :-
$forms_values = $_POST;
$url = "http://sample.com/sample?params=$forms_values";
$resp = file_get_contents($url);
// It takes much time if sample.com is down.
// so need to set time out here.
$response = json_decode($resp, true);
....
....
if ($response["auth"] == "yes"){
header("index.php");
}
my html index.html :-
<form action="login.php" method="post" id="clientLogin">
<div>
<input id="username" placeholder="Email or Username" type="text" name="luser" size="30" value="">
</div>
<div>
<input id="passwd" placeholder="Password" type="password" name="lpasswd" size="30" value="">
</div>
<input class="btn" type="submit" value="Sign In">
</form>
<script type="text/javascript">
//This is not working. and obviously delay will happen in server code
//and i cant get it in client side
$(window).load(function () {
var submit = false;
$("#clientLogin").submit(function(e) {
alert("me after 1000 mili seconds");
setTimeout(function(){
alert("me after 1000 mili seconds");
submit = true;
$("#clientLogin").submit(); // if you want
}, 15000);
if(!submit)
e.preventDefault();
});
};
</script>
This javascript is not working. and obviously delay will happen in server code and i cannot watch it from client side.
so this is what i want. need to terminate submission process (from submit to rendering next page) if my file_get_contents()
function is not responding for long.
Note: Please dont ask me to use curl, Because i am instructed to not use curl. and i cant get it in client side
The default value for a timeout in file_get_contents() is 60 seconds. You can change this value through the default_socket_timeout setting. It's also doable in your code:
ini_set('default_socket_timeout', 2); // 2 seconds