在用php做网站开发的时候 , 为防止用户看到错误信息,而出现的不友好界面。故一般性会在php.ini里设置:
display_errors = Off;
不过在开发的时候,我们有时候需要打开错误信息。这时候,可以在php文件里设置:
ini_set("display_errors","On");
error_reporting(E_ALL);


不过有时候我们及时这样设置了  还是无法显示php里的语法错误。
这是由于php文件的语法错误导致该文件根本没有被执行,所以当然不会显示错误信息

解决方法:

假设这个php里有语法错误
你可以新建一个test.php
然后在该php里如下编辑:
ini_set("display_errors","On");
error_reporting(E_ALL);
include("目标文件");
这样,当你在运行test.php的时候  程序就会报其中的错误语法.
PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多。下面介绍了十个PHP高级应用技巧。

1, 使用 ip2long() 和 long2ip() 函数来把 IP 地址转化成整型存储到数据库里。

这种方法把存储空间降到了接近四分之一(char(15) 的 15 个字节对整形的 4 个字节),计算一个特定的地址是不是在一个区段内页更简单了,而且加快了搜索和排序的速度(虽然有时仅仅是快了一点)。

2, 在验证 email 地址的时候使用 checkdnsrr() 函数验证域名是否存在。

这个内置函数能够确认指定的域名能够解析成 IP 地址。该函数的 PHP 文档的用户评论部分有一个简单的用户自定义函数,这个函数基于 checkdnsrr(),用来验证 email 地址的合法性。该函数的具体用法可自行查询 php 帮助文档去。

3, 如果你使用的是 PHP 5 和 MySQL 4.1 或者更高的版本,考虑抛弃 mysql_* 系列函数改用改进版的 mysqli_* 系列函数。

一个很好的功能就是你可以使用预处理语句,如果你在维护一个数据库密集型站点,这个功能能够加快查询速度。这个是根据一些评估分数得出的结论。

4, 学会爱上三元运算符。

5, 如果你在项目中感觉到有可复用的部分,在你写下一行代码前先看看 PEAR 中是否已经有了。

很多 PHP 程序员都知道 PEAR 是一个很好的资源库,虽然还有很多程序员不知道。这个在线资源库包含了超过 400 个可以复用的程序片段,这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的,你总能找到帮你节省时间的 PEAR 包。(参见 PECL)

6, 用 highlight_file() 来自动的打印出格式化的很漂亮的源代码。

如果你在留言板、IRC 这些地方寻求一个脚本的帮助的话,这个函数用起来非常的顺手。当然了,要小心不要意外的泄露出你的数据库连接信息和密码等。

7, 使用 error_reporting(0) 函数来防止用户看到潜在的敏感错误信息。

在理想情况下,发布服务器应该在 php.ini 里完全禁止。但是如果你用的是一个共享的 web 服务器的话,你没有自己的 php.ini 文件,那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0);(或者使用 require_once() 方法)。这就能够在出错的时候完全屏蔽敏感的 SQL 查询语句和路径名。

8, 在网数据库中存储很大的字符串之前使用 gzcompress() 和 gzuncompress() 来显式的压缩/解压字符串。

这个 PHP 内置函数使用 gzip 算法,可以压缩普通文本达 90%。在我每次要读写 BLOB 类型的字段的时候都使用这些函数。唯一额例外就是当我需要全文检索的时候。
使用sqlite的时候出现问题,无法读出数据,支持sqlite3的环境可以正常

class MyDB extends SQLite3
{
    function __construct()
    {
  $db = "/path/to/data.db";
        $this->open($db);
    }
}

$db = new MyDB();
// $db->exec('CREATE TABLE foo (bar STRING)');
// $db->exec("INSERT INTO foo (bar) VALUES ('This is a test')");

$result = $db->query('SELECT * FROM table');
var_dump($result->fetch());


sqlite函数的不行,提示“file is encrypted or is not a database”

if ($db = sqlite_open($db, 0666, $sqliteerror)) {
    // sqlite_query($db, 'CREATE TABLE foo (bar varchar(10))');
    // sqlite_query($db, "INSERT INTO foo VALUES ('fnord')");
    $result = sqlite_query($db, 'select bar from foo');
    var_dump(sqlite_fetch_array($result));
} else {
    die($sqliteerror);
}





If you get an error message:
Warning: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database
then most probably your code is accessing a SQLite3 database.
sqlite_open() only supports SQLite2.  Use PDO to access SQLite3.

sqlite_open()只支持sqlite2版本,暂不支持sqlite3版本;
若连接sqlite3必须用sqlite_pdo去连接,参考下面的代码:
安装过程有点曲折,具体辛酸就不说了。。
反正折腾两三个小时,尝试了各种方式,结果也无法正确的整理出那个步骤就好,所以贴一些片段,希望对有需要的朋友有帮助。

1 Mac下快速安装PHP框架Yaf

引用
Yaf是国内PHP大神Laruence基于PHP扩展开发的框架。主要特点就是速度快,效率高,比使用PHP代码开发的框架性能都要高很多。据大神说已经用上了新浪Weibo上,TPS提升了76个百分点。具体可以参考Yaf的主页。 在Mac下安装开源软件和服务器软件当然没有Ubuntu的apt-get顺手,但也有MacPorts和HomeBrew等优秀的包管理器,我目前使用的是后者,因为它用起来更简单,可以让你去专注做需要专注的事情。 最近几个项目准备用Yaf开发,所以提交了Yaf的Brew脚本上去,如果大家有兴趣也可以贡献一些好用的PHP Brew,让大家用起来都方便。具体可以参考homebrew-php项目 关于Brew的安装,基本上一个命令就搞定了,具体可以参考HomeBrew安装

    ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)

接下来需要将PHP的Brew库tap到本地(homebrew-php项目可以安装大部分常用的php扩展)

    brew tap josegonzalez/homebrew-php

如果你tap过,只需要执行

    brew update

然后安装只需要执行

    brew install php53-yaf // 如果是5.4,则用php54-yaf

搞定(注意:需要自己修改php.ini添加扩展路径)


我按上面的操作了,结果加载不上,无奈,但这个应该算说明的比较好了
具体链接就不做了,点击看原文吧
引用
本文是《php curl 多线程采集》的demo,尽可能展示此类的特性。此demo环境是本机,所以性能不能达到最高,只做为使用说明,为了高性能请到服务器调试。选择http://www.1ting.com/作为目标站点,这个站比较典型,而且国内速度也很快。

本文用到两个类(这两个类在完整的demo包中已经包含):
CUrl:多线程,可以在这里找到。
PHPQuery:HTML分析,项目地址 http://code.google.com/p/phpquery/。如果google被封这里有较新版本 phpQuery-0.9.5.386.zip。这里用的压缩包中的 phpQuery/phpQuery.php这个单文件类,如果你不会用这个类没关系,用正则分析也可以。

必要的文件包含和初始化实例代码中都省略了。
代码非常完整,可以直接运行,demo请在命令行模式运行(你懂的)。
代码非常简洁。。。
PHPQuery需要php-dom扩展,PHP环境没有的话需要安装。另外一点一定注意!如果使用phpQuery必须在回调函数中手动调用phpQuery::unloadDocuments();释放,否则phpQuery处理的文档全部都在内存中!!!
数据库操作使用PDO,所以也需要PDO扩展。
既然是demo,那么程序上我就一切从简了。
phpQuery很NB,很多变态的用法自己去研究吧,基本可以说无所不能。如果使用phpQuery必须在回调函数中手动调用phpQuery::unloadDocuments();释放,否则phpQuery处理的文档全部都在内存中!!!
并发情况可以用360的连接查看器查看。

CUrl一些必要内容:

CUrl类单线程和多线程都可以使用缓存,并且缓存机制一样。
CUrl类抓取HTML单线程和多线程返回的内容结构一致
$result=array(‘info’=>array(),’content’=>”);
$result['info']是curl_info()的内容,$result['content']是抓取的html文件。
curl配置分为三个级别,优先级由低到高如下,优先级高的会覆盖优先级低的配置。
默认:如私有方法init()中所示。
类级别:保存在 $opt这个公有属性中,此CURL对象的所有操作中都会起作用。
任务级别:多线程任务中添加任务时指定,只在当前任务中起作用。
类中用到回调函数的地方都使用call_user_func_array(),所以必须先从PHP手册中把这个函数搞明白了。


查看原文:PHP-Curl多线程教程
php curl 多线程
分页: 3/20 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐