здесь - выборка. php (обновление таблицы mysql из функции php), и она выполняется JavaScript каждую секунду, она отлично работает от 3 до 4 минут, но после задержки от 20 до 25 второй для обновления mysql записей.
header('Content-Type: text/plain');
require 'php/config.php';
function fxcm($currency){
global $bid,$ask,$h,$l,$curr;
$url="https://www.live-rates.com";
$result=file_get_contents($url);
$characters = json_decode($result,true); // decode the JSON feed
$bid= $characters[$currency]["bid"];//($characters);
$ask=$characters[$currency]["ask"];
$h=$characters[$currency]["high"];
$l=$characters[$currency]["low"];
$curr=$characters[$currency]["currency"];
}
$sql = "SELECT * FROM `json`";
//$result=mysql_query($sql);
$result=mysqli_query($conn, $sql);
while($row = mysqli_fetch_array($result)){
$currency=$row['currency'];
$str=$row['symbol'].";";
echo eval($str);
$Update="UPDATE `json` SET `bid` = '$bid', `ask` = '$ask', `high` = '$h', `low` = '$l' WHERE `source` ='".$curr."'";
mysqli_query($conn,$Update);
$dbbid=$row['bid'];
$dbask=$row['ask'];
$dbhigh=$row['high'];
$dblow=$row['low'];
}
}
/////////////////////////////////////// ///// ajax функция с URL, которая возвращает onFailure: при доступе через нескольких пользователей
new. php
<?php
set_time_limit(0);
session_start();
header('Content-Type: text/plain');
require 'php/config.php';
$Pre_sessionid=$_SESSION['SessID_Sess'];
if(isset($_SESSION['SessID_Sess'])){
$Pre_sessionid=$_SESSION['SessID_Sess'];
}else{
$Pre_sessionid="103252";
}
if(isset($_SESSION['UserID'])){
$myuserID=$_SESSION['UserID'];
$sql="SELECT * FROM tblusers WHERE ID='$myuserID'";
$result=mysqli_query($conn,$sql);
$row=mysqli_fetch_array($result);
$New_sessionid=$row['session_id'];
}else{
$New_sessionid="00000";
}
$date = date("Y-m-d");
$unixTimestamp = strtotime($date);
$dayName = date("l", $unixTimestamp);
$m=($dayName=='Saturday' || $dayName=='Sunday') ? FALSE : TRUE;
$s=($New_sessionid <> $Pre_sessionid) ? FALSE : TRUE;
if($s===FALSE){
session_destroy();
}
$results['m']=$m;
$results['s']=$s;
$sql = "SELECT * FROM `json`";
$result=mysqli_query($conn, $sql);
while($row = mysqli_fetch_array($result)){
$currency=$row['currency'];
$dbbid=$row['bid'];
$dbask=$row['ask'];
$dbhigh=$row['high'];
$dblow=$row['low'];
if($s=='true'){
$results['q'][strtolower($currency)] = array(
'b'=> $dbbid,
'a'=> $dbask,
'h'=> $dbhigh,
'l'=> $dblow
);
}
}
print_r(json_encode($results));
?>
Ajax функция, которая вызывается каждую секунду
function UpdateTable(){
var url = "new.php?a="+Math.floor((Math.random() * 100) + 1);
new Ajax.Request(url, {
method: 'get',
dataType: 'json',
cache:false,
onCreate: function() {
},
onSuccess: function(transport) {
connected = true;
if(transport.responseText != undefined && transport.responseText.length > 0)
{
var jsonData = transport.responseText.evalJSON();
// Update the Market status
marketOpen = jsonData.m;
if(jsonData.s){ .....
onFailure: function() {
currencyFetchStatus = { status:'<strong>Disconnected! failed to Connect!</strong>', style:{ color:'red'} };
connected = false;
}