这儿记录一些PHP使用过程中遇到的问题已经相应的解决方案。
PHP网页程序运行超时
问题
运行网页的时候,抛出异常:Maximum execution time of 30 seconds exceeded
原因
网页PHP代码执行时间超过了默认的30秒导致。
解决办法
修改PHP配置,增高运行时间,php.ini 文件中的配置项
max_execution_time 30 # 默认运行时间30秒,适当调整 max_execution_time 60
或者在预估运行时间超过30秒的PHP代码中加入下面这条语句。此方法在PHP运行与安全模式下时不生效。
set_time_limit(0) ;// 0表示不限时
PHP composer设置忽略本机的PHP版本
composer install --ignore-platform-reqs composer update --ignore-platform-reqs
PHP数据插入时获取插入时的id
当需要插入的数据关联多张表时,往往需要知道插入表的数据的id。可以使用下边三种方式。
- mysql_query(“select max(id) from table_name”,$connection); 该方法获取的是最大的id,即最后一个,多线程时不适用。
- msyql_insert_id(connection); connection 链接执行完插入语句以后,会返回插入的id给PHP,PHP可以直接使用该函数获取,而不用再查询数据库。
- msyql_query(“select last_insert_id()”); last_insert_id() 是mysql 一个函数,返回最后一次插入的id。
以上三种方式中的 mysql 在PHP5.3以上版本可以使用 mysqli 替换。
PHP获取使用POST raw 方式提交的数据
解决办法:$data = file_get_contents(“php://input”);
php://input 是个可以访问请求的原始数据的只读流,和 $HTTP_RAW_POST_DATA 相同,php://input 使用更加广泛。
POST 请求方式的数据个请求头部 Content-Type 密切相关:
- application/x-www-data-urlencoded : php://input 和 $_POST 数据一致
- application/x-www-data-urlencoded 和 multipart/form-data :PHP会将http请求数据包中相应的数据填入全局变量$_POST
- Coentent-Type为multipart/form-data:PHP不会将http请求数据包中的相应数据填入php://input,否则其它情况都会
- PHP会将PATH字段的query_path部分,填入全局变量$_GET。通常情况下,GET方法提交的http请求,body为空
PHP 操作 cookie
cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。
- setcookie() 函数用于设置 cookie:setcookie(name, value, expire, path, domain)
- setcookie() 函数必须位于 <html> 标签之前
- PHP 的 _COOKIE 变量用于取回 cookie 的值:_COOKIE[“user”]
- 当删除 cookie 时,您应当使过期日期变更为过去的时间点:setcookie(“user”, “”, time()-3600)
PHP json_encode 格式化
需要对 json_encode 的字符串有换行空格等,便于查看,使用下面的语句。
json_encode($params, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
CentOS/Linux Composer安装
首先下载 composer.phar:
curl -sS https://getcomposer.org/installer | php # 验证,查看版本 ./composer.phar -V
然后添加到环境变量
mv composer.phar /usr/local/bin/composer ln -s /usr/local/php /usr/local/bin/php