第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

無需重新加載頁(yè)面的永久請(qǐng)求

無需重新加載頁(yè)面的永久請(qǐng)求

PHP
函數(shù)式編程 2023-04-02 10:24:49
我的網(wǎng)絡(luò)提供商是 Strato。我想每 10 秒進(jìn)行一次 mysql select 查詢而不重新加載頁(yè)面:Strato 無法使用 Websocket。對(duì)我來說,替代方案是 ajax 輪詢。我試過這個(gè):$.ajax({   type: "POST",   url: "ajax/mysqlQuery.php",   data: 'userID=10'}).done(function(result) {      if(result) {         // DO SOMETHING      }})mysql查詢.php<?php$data= null;include("../inc/config.php");while(!$data) {    sleep(10);    $statement = $mysqli->prepare("SELECT * FROM `table` WHERE userID = ?");    $statement->bind_param("s", $_POST["userID"]);    $statement->execute();    $result = $statement->get_result();    while($row = $result->fetch_object()) {        $data[] = array("ID" => $row->ID);    }}echo json_encode($data);?>這很好用。但:Strato 的 php max_execution_time 為 120 秒。我的腳本在 120 秒內(nèi)運(yùn)行良好 - 然后就會(huì)停止。我該如何解決這個(gè)問題?
查看完整描述

1 回答

?
www說

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

我沒有在您的 JS 代碼中看到任何實(shí)際的輪詢,例如。不是setInterval那種東西。要每 10 秒實(shí)際運(yùn)行一次 JS 函數(shù),您應(yīng)該需要以下內(nèi)容:


const doRequest = () => {

  $.ajax({

    type: "POST",

    url: "ajax/mysqlQuery.php",

    data: 'userID=10'

  }).done(function(result) {

    if (result) {

      // DO SOMETHING

    }

  });

}


setInterval(doRequest, 1000);

關(guān)于 PHP 部分,我認(rèn)為您的腳本中不需要 a while(!$data){ ... },因?yàn)橹挥性谶M(jìn)行 AJAX 調(diào)用時(shí)才會(huì)對(duì)其進(jìn)行評(píng)估,因此您實(shí)際上可以擺脫它。


我已經(jīng)修改了您的 PHP 代碼中的一些內(nèi)容,我將對(duì)此進(jìn)行解釋


<?php

// just leave it alone at the beginning

include("../inc/config.php");


$statement = $mysqli->prepare("SELECT * FROM `table` WHERE userID = ?");

$statement->bind_param("s", $_POST["userID"]);

$statement->execute();

$result = $statement->get_result();


$data = null;

// maybe you can use $result->fetch_assoc() directly instead of returning an object and mapping it back to an associative array

while($row = $result->fetch_object()) {

    $data[] = array("ID" => $row->ID);

}


// close the statement for better PHP performances

$statement->close();


// return it

echo json_encode($data);


?>

如果您的腳本將繼續(xù)花費(fèi)超過 2 分鐘的時(shí)間來回答,則可能是數(shù)據(jù)庫(kù)出了問題,或者它只是限制了您的腳本的主機(jī)


作為旁注,如果您希望從您的 PHP 代碼中獲得一個(gè)數(shù)組,您也可以設(shè)置$data = []為默認(rèn)值,這樣如果沒有返回任何內(nèi)容,您將不需要在 JS 代碼中編輯內(nèi)容,例如檢查結(jié)果是否實(shí)際上是一個(gè)數(shù)組等等...


查看完整回答
反對(duì) 回復(fù) 2023-04-02
  • 1 回答
  • 0 關(guān)注
  • 129 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)