Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP冻结:如何循环连接到2个MySQL数据库_Php_Mysql_Loops_Freeze - Fatal编程技术网

PHP冻结:如何循环连接到2个MySQL数据库

PHP冻结:如何循环连接到2个MySQL数据库,php,mysql,loops,freeze,Php,Mysql,Loops,Freeze,如何执行该循环: while ($row = mysql_fetch_array($result)) { collectData($row['NAME']); } 30秒后不冻结我的PHP 我认为可以通过将整个数据库放入数组或*.temp文件来处理它,而不是每次我想要输入/输出某些内容时都连接。但是我在文件和数组方面有问题,所以我问:快速、无痛地完成任务的更好/最好的方法是什么 <?php //fiveMin - Database that data is taken form

如何执行该循环:

while ($row = mysql_fetch_array($result)) {
    collectData($row['NAME']);
}
30秒后不冻结我的PHP

我认为可以通过将整个数据库放入数组或*.temp文件来处理它,而不是每次我想要输入/输出某些内容时都连接。但是我在文件和数组方面有问题,所以我问:快速、无痛地完成任务的更好/最好的方法是什么

<?php

//fiveMin - Database that data is taken form
//HighCharts - Database that data is transferred to

$fiveMin=mysql_connect($fiveMin_host,$fiveMin_user,$fiveMin_pass);
mysql_select_db($fiveMin_db,$fiveMin) or die (mysql_error());               

$query="SELECT * FROM BetterShopItemStock";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
    collectData($row['NAME']);
}

function collectData($itemID) {

    global $fiveMin_host, $fiveMin_user, $fiveMin_pass, $fiveMin_db, $week_host, $week_user, $week_pass, $week_db;  

    $fiveMin=mysql_connect($fiveMin_host,$fiveMin_user,$fiveMin_pass); //Load and store data from fiveMin Database
    mysql_select_db($fiveMin_db,$fiveMin) or die (mysql_error());
    $function_Query="SELECT AMT FROM BetterShopItemStock WHERE NAME = '$itemID'";
    $function_Ask = mysql_query($function_Query);
    $function_Result = mysql_fetch_row($function_Ask, 0);
    $dataReadyToImport = "," . $function_Result[0];
    @mysql_close($fiveMin);

    $HighCharts=mysql_connect($week_host,$week_user,$week_pass); //Save stored data to weekly Database
    mysql_select_db($week_db,$HighCharts) or die (mysql_error());
    $function_Query="SELECT AMT FROM BetterShopItemStock WHERE NAME = '$itemID'";
    $function_Ask = mysql_query($function_Query);
    $function_Result = mysql_fetch_row($function_Ask, 0);
    $storedData = $function_Result[0];
    $dataReadyToImport = $storedData . $dataReadyToImport;
    mysql_query("UPDATE BetterShopItemStock SET AMT='$dataReadyToImport' WHERE NAME='$itemID'");

    @mysql_close($HighCharts);

}

?>
(1)您不必为每个查询打开和关闭一个连接—为每个服务器打开一个连接,并对它们进行多个
mysql\u query()
调用。这会让你的速度大大加快

(2) 不要使用“从BetterShopItemStock中选择*”。。。仅选择所需的行。(这里是“姓名”)。如果您已经在该表中查询“NAME”,则同时选择“AMT”,而不是再次调用它

(3) 您可以将对HighCharts的select和update调用组合到一个查询中

总之,一切都应该是这样的:

<?php

    //fiveMin - Database that data is taken form
    $fiveMin=mysql_connect($fiveMin_host,$fiveMin_user,$fiveMin_pass);
    mysql_select_db($fiveMin_db,$fiveMin) or die (mysql_error());

    //HighCharts - Database that data is transferred to
    $HighCharts=mysql_connect($week_host,$week_user,$week_pass); //Save stored data to weekly Database
    mysql_select_db($week_db,$HighCharts) or die (mysql_error());

    $query="SELECT NAME,AMT FROM BetterShopItemStock";
    $result = mysql_query($query,$fiveMin);
    while ($row = mysql_fetch_row($result)) {
        collectData($row[0],$row[1],$HighCharts);
    }

    function collectData($itemID, $itemAmt, $mysql) {
        $id = mysql_real_escape_string($itemID);
        $amt = mysql_real_escape_string($itemAmt);
        $q = "UPDATE BetterShopItemStock SET ".
             "AMT=CONCAT(AMT,',','$amt') WHERE NAME='$id'";
        $r = mysql_query($q,$mysql);
        return (!$r ? false : true);


    }

    //now close the databases
    @mysql_close($HighCharts);
    @mysql_close($fiveMin);
?>

将每个人分成几个类,然后使用它们。这样可以使它们更高效地运行,并且查询不会相互啮合:

<?php
class class1{
     function fivemin(){
          **code0**
     }
     function collectdata1-fivemin() {
          class1::fivemin();
          **code**
     }
     function collectdataHighcharts(){
          class1::fivemin();
          **code2**
     }
}
$a = new class1;
$a->collectdata1-fivemin();
$a->collectdata1HighCharts();
?>


PHP冻结或消亡是因为(默认)30秒的最长执行时间已经过去了吗?它停止的速度甚至比30秒还要快,但说它扩展了它。请原谅我,但这里有多个mySqlquery?你为什么要改变我的方法?我将数据从一个数据库添加到另一个数据库<代码>函数collectData($itemID,$itemant,$mysql)
-这太糟糕了。为什么我必须包含$itemAmt和$mysql?包含
$itemAmt
可以避免您必须进行第二次
SELECT
调用才能获得
AMT
列。而
$mysql
只是您将要更新的数据库的mysql连接(这里,
$HighCharts
)什么
$a->collectdata1-fivemin()是什么?