GVKun编程网logo

PHP 5.3.5 PDO FETCH_OBJ内存泄漏?(php内存泄漏排查)

18

在本文中,我们将给您介绍关于PHP5.3.5PDOFETCH_OBJ内存泄漏?的详细内容,并且为您解答php内存泄漏排查的相关问题,此外,我们还将为您提供关于mssql_fetch_object文本字

在本文中,我们将给您介绍关于PHP 5.3.5 PDO FETCH_OBJ内存泄漏?的详细内容,并且为您解答php内存泄漏排查的相关问题,此外,我们还将为您提供关于mssql_fetch_object文本字符限制?、mysql_fetch_array vs mysql_fetch_assoc vs mysql_fetch_object?、mysql_fetch_array 与 mysql_fetch_object函数与用法、mysql_fetch_array 与 mysql_fetch_object函数与用法_PHP教程的知识。

本文目录一览:

PHP 5.3.5 PDO FETCH_OBJ内存泄漏?(php内存泄漏排查)

PHP 5.3.5 PDO FETCH_OBJ内存泄漏?(php内存泄漏排查)

我目前正在开发一个使用PDO的 PHP应用程序.我正在写一个导入文件,它读入一个CSV文件,检查数据库中的记录,以及更新,删除等等….

我注意到的是这个脚本使用的内存似乎非常高,似乎可能与我执行查询的方式有关.请参阅下面的示例查询,该查询是针对CSV中的每一行执行的:

$qry = "SELECT * FROM company WHERE id = 1";
$sth = $this->prepare($qry);
$sth->execute();
$sth->setFetchMode(PDO::FETCH_INTO,new Company());
$sth->fetch();

对于上面的memory_get_peak_usage()= 6291456

使用以下时:

$qry = "SELECT * FROM company WHERE id = 1";
$sth = $this->prepare($qry);
$sth->execute();
$sth->setFetchMode(PDO::FETCH_CLASS,"Company");
$sth->fetch();

对于上面的memory_get_peak_usage()= 524288

你可以看到差异相当大.

我想我有3个问题..

>在PHP 5.3.5中使用PDO :: FETCH_OBJ时是否存在内存泄漏?
>使用FETCH_CLASS与FETCH_OBJ相比有什么区别吗?
>还有其他人遇到过同样的问题吗?

公司类很简单:

class Company {
    function __construct(){}
    /**classvars**/
    public $_tablename = 'company';
    public $transient;
    public $id;
    public $name;
    /**endclassvars**/
}

解决方法

看看 PHP changelog,似乎在5.3.4中有一个相关的修正,其中一个是 memory leak was fixed in PDO FETCH_INTO.

从你所说的,我怀疑是的,这是你看到的错误.当然,解决方案是升级 – 坚持使用旧的补丁版本毫无意义.

即使这不是您所看到的错误,在5.3.3和现在之间的版本中已经有大量的PDO修复;我敢肯定,至少其中一些与你相关的机会很大.

mssql_fetch_object文本字符限制?

mssql_fetch_object文本字符限制?

我正在使用mssql_fetch_object从MSSQL表中获取一些数据,但是文本似乎在页面上被截断了。

数据在表中全部存在,但似乎在视图页面中被切断了。

其他人是否遇到过此问题,也许知道解决方法?这是我的代码;

<?php include(''includes/session.php'');$query = "SELECT content FROM pages WHERE id = ''11''";$result = mssql_query($query);$page = mssql_fetch_object($result);?><div id="leftcol"><?php echo stripslashes($page->content) ?></div>

答案1

小编典典

我不熟悉在php中使用mssql的情况,但是我只是尝试了使用mysql的示例而没有问题。

这对我来说可疑

VAR_DUMP()返回字符串(4096)

所以我做了一些谷歌搜索,发现了这个链接

http://www.bram.us/2007/07/05/my-dotd-ms-sql-vs-php-4096-is-the-default-
limit/

它建议将php.ini中的mssql.textlimit和mssql.textsize更改为1048576(即2藛20),默认值为4096。希望能有所帮助。

php.ini

  ; Valid range 0 - 2147483647.  Default = 4096.  mssql.textlimit = 1048576  ; Valid range 0 - 2147483647.  Default = 4096.  mssql.textsize = 1048576

mysql_fetch_array vs mysql_fetch_assoc vs mysql_fetch_object?

mysql_fetch_array vs mysql_fetch_assoc vs mysql_fetch_object?

mysql_fetch_array vs mysql_fetch_assoc vs mysql_fetch_object?

这些 mysql_* 函数已弃用,并且可以使用其他函数来提供更好的安全性和功能。

注意:作为替代方案,可以使用 _assoc 或 _row。

mysql_fetch_assoc

该函数返回与所获取的行相对应的字符串关联数组,如果没有更多行,则返回 FALSE。关联性数组告诉我们键值对,而键告诉我们任何列名称,值告诉我们行值。

这里我们可以将列名映射为键,将值映射为行。例如。

Key is ID and value is corresponding name.
登录后复制

mysql_fetch_array

​​>

这个函数名称表明它返回一个数组。它将结果行作为关联数组、数值数组或两者来获取。它的键既有数字值,也有字符串值。

mysql_fetch_object

此函数将行作为对象返回,并且不返回数组。

以上就是mysql_fetch_array vs mysql_fetch_assoc vs mysql_fetch_object?的详细内容,更多请关注php中文网其它相关文章!

mysql_fetch_array 与 mysql_fetch_object函数与用法

mysql_fetch_array 与 mysql_fetch_object函数与用法

mysql_fetch_array 与 mysql_fetch_object函数与用法

mysql教程_fetch_array  与 mysql_fetch_object函数与用法

$conn=mysql_connect("127.0.0.1","root","root");  mysql_select_db("ip");  $sql="select * from adminblog  ";  $result=mysql_query($sql,$conn);       while($rs=mysql_fetch_array($result))         {    echo $rs->username;    echo $rs->password;   } //运行代码提示Notice: Trying to get property of non-object 好了,我们现在修改一下 while($rs=mysql_fetch_array($result))         {    echo $rs[''username''];    echo $rs[''password''];   }


 //输出结果: adsense 5498bef14143cd98627fb0560cb5ded6
//现在来看一个mysql_fetch_object的实例

 

 

while($rs=mysql_fetch_object($result))
        {
   echo $rs[''username''];
   
  }

//运行后出来 Fatal error: Cannot use object of type stdClass as array in 说这不是一个数组

 

while($rs=mysql_fetch_object($result))
        {
   echo $rs->username;
   
  }

//输出结果为 adsense
/*
总结:
mysql_fetch_object 把记录作来一个对象来处理,像我们用类时就要用->访问
mysql_fetch_array 把记录保存到一个数据所以可以用$rs[''下标名''] 或$rs[0]数组编号

本站原创教程转载注明来源php教程er/php.html">http://www.bKjia.c0m/phper/php.html

mysql_fetch_array 与 mysql_fetch_object函数与用法_PHP教程

mysql_fetch_array 与 mysql_fetch_object函数与用法_PHP教程

mysql_fetch_array 与 mysql_fetch_object函数与用法

mysql教程_fetch_array  与 mysql_fetch_object函数与用法

$conn=mysql_connect("127.0.0.1","root","root");  mysql_select_db("ip");  $sql="select * from adminblog  ";  $result=mysql_query($sql,$conn);       while($rs=mysql_fetch_array($result))         {    echo $rs->username;    echo $rs->password;   } //运行代码提示Notice: Trying to get property of non-object 好了,我们现在修改一下 while($rs=mysql_fetch_array($result))         {    echo $rs[''username''];    echo $rs[''password''];   }


 //输出结果: adsense 5498bef14143cd98627fb0560cb5ded6
//现在来看一个mysql_fetch_object的实例

 

立即学习“PHP免费学习笔记(深入)”;

 

立即学习“PHP免费学习笔记(深入)”;

while($rs=mysql_fetch_object($result))
        {
   echo $rs[''username''];
   
  }

//运行后出来 Fatal error: Cannot use object of type stdClass as array in 说这不是一个数组

 

立即学习“PHP免费学习笔记(深入)”;

while($rs=mysql_fetch_object($result))
        {
   echo $rs->username;
   
  }

//输出结果为 adsense
/*
总结:
mysql_fetch_object 把记录作来一个对象来处理,像我们用类时就要用->访问
mysql_fetch_array 把记录保存到一个数据所以可以用$rs[''下标名''] 或$rs[0]数组编号

本站原创教程转载注明来源php教程er/php.html">http://www.bKjia.c0m/phper/php.html

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/630874.htmlTechArticlemysql_fetch_array 与 mysql_fetch_object函数与用法 mysql教程_fetch_array 与 mysql_fetch_object函数与用法 $conn=mysql_connect(127.0.0.1,root,root); mysql_select_db(ip);...

关于PHP 5.3.5 PDO FETCH_OBJ内存泄漏?php内存泄漏排查的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于mssql_fetch_object文本字符限制?、mysql_fetch_array vs mysql_fetch_assoc vs mysql_fetch_object?、mysql_fetch_array 与 mysql_fetch_object函数与用法、mysql_fetch_array 与 mysql_fetch_object函数与用法_PHP教程等相关内容,可以在本站寻找。

本文标签: