Задержка обновления mysql строк через некоторое время и при доступе нескольких пользователей выполняет функцию onFailure: - PullRequest
0 голосов
/ 15 апреля 2020

здесь - выборка. 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;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...