【问题标题】:PHP echo not printingPHP回显不打印
【发布时间】:2014-09-20 08:39:36
【问题描述】:

我在 PHP 编码中遇到了一个奇怪的问题...让我描述一下我的 PHP 代码的用途

  1. 从 Excel 中读取单元格值并将其上传到 MySQL 表中
  2. 从 MySQL 表中读取每个值并从外部源获取数据
  3. 将数据存储在从外部源获取的表中
  4. 回显过程完成
  5. 回显链接以显示结果

代码运行良好,但当 Excel 行大小很大时,点 1、2、3 正常工作,但 4,5 不显示

没有错误没有警告...

我只是不知道为什么会发生这个问题

下面附上代码sn-p:

<?php

error_reporting (E_ALL ^ E_NOTICE);

error_reporting (E_ALL ^ E_DEPRECATED);

error_reporting(0);

session_start();

require_once("index11.php");

require_once("simple_html_dom.php");

include('ganon.php');

ini_set('max_execution_time', 1200);






$val2 = $_SESSION['$val2'];




if($_SESSION['$val8'] == "mu")
{

if($_SESSION['$val2'] == "fr")

{

//echo "MU for FR";


$conn = mysql_connect("localhost", "root", "****");


if (!$conn) {
    echo "Unable to connect to DB: " . mysql_error();
    exit;
}

if (!mysql_select_db("DB")) {
    echo "Unable to select mydbname: " . mysql_error();
    exit;
}


$sql = "SELECT DISTINCT EANcode from test WHERE timestamp = DATE( NOW( ) ) and EAncode <> ''";



$result = mysql_query($sql);
$a = 0;

while ($row = mysql_fetch_assoc($result)) {

foreach ($row as $b) 

 { 
$ean = $b;

$url = "WWW.URL.COM" .$ean;

$html = file_get_html($url);


$link=$html->find('a[class=webtrekk]');

$link1 = $link[4] -> href;


$link2 = "WWW.URL.COM" .$link1;

$html = file_get_dom($link2);


$i = 0;

foreach($html('tr') as $rowdata) {
        $name = '';
        $test1 = '';

       foreach($rowdata('a[class="test1"]') as $d) {
            $name = $d('img', 0)->alt;

$name2 = mysql_real_escape_string($name);
$arr = explode("-", $name2, 2);
$name1 = $arr[0];


        }      

foreach($rowdata('td[class="test1"]') as $d) {
            foreach($d('span[class="test1"]') as $d2) {
                $test1 = $d2->getPlainText();
            }
        }      

if(!$test1 == "")
{
$i = $i + 1;

$now = new DateTime();

$dt = $now->format('Y-m-d H:i:s');

mysql_select_db("DB", $conn);

$sql = "INSERT INTO `DB`.`tab_fr` (`pos`, `ean`, `prod_url`, `prod_compttr`, `prod_test1`, `timestamp`) VALUES ('$i', '$ean','$link2','$name1','$test1', '$dt')";

mysql_query($sql) or die('Error, insert query failed' . mysql_error());




}
    }


}      

}
flush();
usleep(300000);
$msg = "Query op Test.fr succesvol afgerond"; 
echo $msg ."<br/>" ;

}


if($_SESSION['$val2'] == "fr")
{
$v2 = "Test.fr,";
}
else
{
$v2 = "";
}


if($_SESSION['$val2'] == "fr")
{

echo "<a href=10d2.php>cLICK HERE ".$v2."</a>" ."<br/>";

}
}

?>

发生这种情况是因为代码中遇到了超时问题,任何人都可以帮助我如何在超时后继续编码。

【问题讨论】:

  • 请粘贴您的代码,以便我们了解它是如何完成的,也许可以帮助您走上正确的道路
  • 第 3 点的结尾不起作用。否则会出现第 4 点的回声。
  • @FranzHolzinger 此代码适用于较小行的测试表,但是当我上传大量行时,此回显消息不起作用
  • 您在最新的echo "&lt;a href=10d2.php&gt;cLICK HERE ".$v2."&lt;/a&gt;" ."&lt;br/&gt;"; 之后没有使用flush();。因此,回显的输出不会写入屏幕,而是挂在内部缓冲区中。
  • @FranzHolzinger...即使在使用 flush() 之后也不行

标签: php mysql


【解决方案1】:

当处理大量数据时,可能会导致相当于无限循环的情况。您会看到数据插入在数据库中成功,但尚未完成。所以你必须找到一个技巧来避免这种无限循环执行。

提示:将整个循环分成 3 或 2 个。

【讨论】:

  • 如果有无限循环,如何打破循环
  • 让我们考虑一下你的循环看起来像:for(i=0;i
猜你喜欢
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2011-09-27
  • 2016-05-21
  • 1970-01-01
相关资源
最近更新 更多