2016-01-25 09:21:59 q601115211 阅读数 4889
  • php订单设计

    php订单设计课程涵盖表单设计的整个环节,包括前台表单,后台PHP代码实现,数据入库。更重要的是把订单设计周边的内容也考虑进去,像php表单验证,ajax后台数据查询等。是你学习php进阶,项目实操很有价值地参考。学完后有什么建议可以给我留言,QQ/微信 68183131

    9977 人正在学习 去看看 秦子恒

从数据库查询大量数据时会出现内容不够的提示

PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted

 

这个问题在PHP的官方网站上叫缓冲查询和非缓冲查询(Buffered and Unbuffered queries)。PHP的查询缺省模式是缓冲模式。也就是说,查询数据结果会一次全部提取到内存里供PHP程序处理。这样给了PHP程序额外的功能,比如说,计算行数,将指针指向某一行等。更重要的是程序可以对数据集反复进行二次查询和过滤等操作。但这种缓冲查询模式的缺陷就是消耗内存,也就是用空间换速度。

 

相对的,另外一种PHP查询模式是非缓冲查询,数据库服务器会一条一条的返回数据,而不是一次全部返回,这样的结果就是PHP程序消耗较少的内存,但却增加了数据库服务器的压力,因为数据库会一直等待PHP来取数据,一直到数据全部取完。

 

很显然,缓冲查询模式适用于小数据量查询,而非缓冲查询适应于大数据量查询。

 

对于PHP的缓冲模式查询大家都知道,下面列举的例子是如何执行非缓冲查询API。


 非缓冲查询方法一: mysqli

 

<?php
$mysqli  = new mysqli("localhost", "my_user", "my_password", "world");
$uresult = $mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT);
if ($uresult) {
   while ($row = $uresult->fetch_assoc()) {
       echo $row['Name'] . PHP_EOL;
   }
}
$uresult->close();
?>

 

 

非缓冲查询方法二: pdo_mysql

<?php
$pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_pass');
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false);
$uresult = $pdo->query("SELECT Name FROM City");
if ($uresult) {
   while ($row = $uresult->fetch(PDO::FETCH_ASSOC)) {
       echo $row['Name'] . PHP_EOL;
   }
}
?>

 

//非缓冲查询方法三: mysql

<?php
$conn = mysql_connect("localhost", "my_user", "my_pass");
$db   = mysql_select_db("world");
$uresult = mysql_unbuffered_query("SELECT Name FROM City");
if ($uresult) {
   while ($row = mysql_fetch_assoc($uresult)) {
       echo $row['Name'] . PHP_EOL;
   }
}
?>

 

 

 

 

 

2019-12-26 17:04:35 u013090676 阅读数 4
  • php订单设计

    php订单设计课程涵盖表单设计的整个环节,包括前台表单,后台PHP代码实现,数据入库。更重要的是把订单设计周边的内容也考虑进去,像php表单验证,ajax后台数据查询等。是你学习php进阶,项目实操很有价值地参考。学完后有什么建议可以给我留言,QQ/微信 68183131

    9977 人正在学习 去看看 秦子恒

在使用php5.6查询数据库时,有一个查询得结果数据在10万条左右,页面访问失败,这时候需要调大php.ini中得

pdo_mysql.cache_size。

2016-05-26 19:14:11 njubluebird2 阅读数 406
  • php订单设计

    php订单设计课程涵盖表单设计的整个环节,包括前台表单,后台PHP代码实现,数据入库。更重要的是把订单设计周边的内容也考虑进去,像php表单验证,ajax后台数据查询等。是你学习php进阶,项目实操很有价值地参考。学完后有什么建议可以给我留言,QQ/微信 68183131

    9977 人正在学习 去看看 秦子恒

php进行数据库查询时会默认使用Buffer。当查询数据量较大时,需要使用Unbuffered Queries。具体见加粗参数。

/Create the connection  
$con = mysqli_connect("127.0.01","root","123456",'test', 3306) or die("Some error occurred during connection " . mysqli_error($con));  
 
// Write query
$strSQL = "SELECT id,report_id FROM pressure_test limit 100000";
 
// Execute the query.
//$query = mysqli_query($con, $strSQL);
$query = mysqli_query($con, $strSQL, MYSQLI_USE_RESULT); //需要添加MYSQLI_USE_RESULT

echo (floor( memory_get_usage() / 1024) ).' kb'. "\n";

// loop over the rows, outputting them
/* while ($row = $query->fetch_assoc()) 
{
echo (floor( memory_get_usage() / 1024) ).' kb'. "\n";
//fputcsv($output, $row);
} */

$row ='';
$i= 10000;
while($row = mysqli_fetch_assoc($query))
{
    if($i == 0){
echo (floor( memory_get_usage() / 1024) ).' kb  in while'. "\n";
$i = 10000; 
}
unset($row);
$i--;
}
echo (floor( memory_get_usage() / 1024) ).' kb  after while'. "\n"; 
// Close the connection
mysqli_close($con);

2019-08-09 17:52:36 qq_37688204 阅读数 538
  • php订单设计

    php订单设计课程涵盖表单设计的整个环节,包括前台表单,后台PHP代码实现,数据入库。更重要的是把订单设计周边的内容也考虑进去,像php表单验证,ajax后台数据查询等。是你学习php进阶,项目实操很有价值地参考。学完后有什么建议可以给我留言,QQ/微信 68183131

    9977 人正在学习 去看看 秦子恒

表结构:

程序代码:

<?php
$servername = "***.***.***.***";
$username = "***";
$password = "***";
$dbname = "******";

$json = '';
$data = array();

class Dustbin 
{
	public $id;
	public $name;
	public $title;
	public $content;
	public $longitude;
	public $latitude;
	public $point;
	public $isOpen;
	public $icon;
	public $ip;
	
	public $full_0;
	public $full_1;
	public $full_2;
	public $full_3;
}
 
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 
 
$sql = "SELECT id, baidu_lon,baidu_lat,full_0,full_1,full_2,full_3 FROM lese";
$result = $conn->query($sql);
 
if ($result->num_rows > 0) {
    // 输出数据
	$index=0;
    while($row = $result->fetch_assoc()) {
		$icon1=array("w"=>23,"h"=>25,"l"=>0,"t"=>21,"x"=>9,"lb"=>12);
		$icon2=array("w"=>23,"h"=>25,"l"=>46,"t"=>21,"x"=>9,"lb"=>12);
        $dustbin = new Dustbin();
		$dustbin->id=($index);
		$dustbin->name="dustbin".($index);
		$dustbin->title="dustbin".($index);
		$dustbin->content="notes".($index);
		$dustbin->ip = $row["id"];
		$dustbin->longitude=$row["baidu_lon"];
		$dustbin->latitude=$row["baidu_lat"];
		$dustbin->point="".($row["baidu_lon"])."|".($row["baidu_lat"]);
		$dustbin->isOpen=0;
		$dustbin->full_0 = $row["full_0"];
		$dustbin->full_1 = $row["full_1"];
		$dustbin->full_2 = $row["full_2"];
		$dustbin->full_3 = $row["full_3"];
		$flag = ($dustbin->full_0+$dustbin->full_1+$dustbin->full_2+$dustbin->full_3);
		if ($flag == 0){
			$dustbin->icon=$icon1;
		}
		else{
			$dustbin->icon=$icon2;
		}
		
		array_push($data,$dustbin);
		$index+=1;
    }
	$json = json_encode($data);//把数据转换为JSON数据.
	echo $json;
} else {
    echo $json;
}
$conn->close();
?>

 

返回结果:

2019-11-15 12:53:39 chenshanqiang 阅读数 123
  • php订单设计

    php订单设计课程涵盖表单设计的整个环节,包括前台表单,后台PHP代码实现,数据入库。更重要的是把订单设计周边的内容也考虑进去,像php表单验证,ajax后台数据查询等。是你学习php进阶,项目实操很有价值地参考。学完后有什么建议可以给我留言,QQ/微信 68183131

    9977 人正在学习 去看看 秦子恒

<?php

$servername = "127.0.0.1:3306";

$username = "root";

$password = "";

$dbname = " ";//数据库名

// 创建连接

$conn = new mysqli($servername, $username, $password,$dbname);

header("content-type:text/html;charset=utf-8");  //设置编码

// 检测连接

if(!$conn )

{

  die('连接失败: ' . mysqli_error($conn));

}

echo '连接成功<br />';

// 设置编码,防止中文乱码

mysqli_query($conn , "set names utf8");

 

/*向数据库插入数据**/

$sql = "insert into users(username,age,gender,phone,address)".

 "value('周发','38','男','12433524556','你的')";

// 执行数据插入

$retval = mysqli_query( $conn, $sql );

if(! $retval )

{

  die('无法插入数据: ' . mysqli_error($conn));

}

echo "数据插入成功\n";

mysqli_close($conn);

 

/*查询数据*/

$sql = "SELECT id,age,gender FROM users";

$result = mysqli_query( $conn, $sql );

if ($result->num_rows > 0) {

    // 输出数据

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

        echo "id: " . $row["id"]. " - Name: " . $row["age"]. " " . $row["gender"]. "<br>";

    }

    echo "数据查询成功";

} else {

    echo "0 结果";

}

mysqli_close($conn);

 

/*更新数据*/

$sql = "UPDATE users SET Age=36,username='周驰' WHERE id=8";

$retval = mysqli_query( $conn, $sql );

if(! $retval )

{

  die('无法更新数据: ' . mysqli_error($conn));

}

echo "数据更新成功\n";

mysqli_close($conn);

 

?>

没有更多推荐了,返回首页