Hugh's Blog

Linux 安装 PHP

Linux 选择安装特定 PHP 版本,做个记录。 CentOS 安装 PHP 安装源: # centos 7 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm # centos 6 # yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm # yum install http://rpms.remirepo.net/enterprise/remi-release-6.rpm 安装 PHP: # yum 命令包 yum install yum-utils # 可以选择版本 # yum-config-manager --enable remi-php55 [Install ...

PHP 转换编码带 BOM 的问题

PHP 在转换文件编码时,如果遇到带有 BOM 头的话,会导致其他应用读取到的内容出现乱码,需要做单独的处理。 $content = file_get_contents('in.txt'); $encode = mb_detect_encoding($content, ['ASCII', 'GBK', 'GB2312', 'BIG5', 'UTF-8']); if ($encode !== 'UTF-8') { $content = iconv($encode, 'UTF-8', $content); } ...

CentOS 6.9 下编译安装 httpd2.4 及 PHP5.6

服务器环境为 CentOS 6.9,在 docker 中测试: docker pull centos:6.9 docker run -d -it --name centos-69 -p 18880:80 -p 18443:443 centos:6.9 bash docker exec -it centos-69 bash 进入到测试环境中: yum update # service 命令可能会缺失 yum install initscripts httpd 2.4 编译 # 查看当前安 ...

PHP cURL Content Type

最近在用 PHP cURL 发送数据给接口,但是接口并没有收到数据,返回了错误信息。 使用 curl_getinfo 查看请求头,发现 Content-Type 的值是 multipart/form-data,而 ...

PHP LDAP 连接超时

最近在使用 PHP 连接 LDAP 服务器做用户验证,在测试域控服务器的时候,设置了超时选项,如果超时则表示无法连接服务器,一般来说,有如下的代码: $conn = @ldap_connect('ldap://1.1.1.1:389'); ldap_set_option($conn, LDAP_OPT_PROTOCOL_VERSION, ...

PHP 数据库并发处理

下面是一些 PHP 数据库并发的简单处理方案,作个记录。 数据库信息 create table goods( id INT NOT NULL AUTO_INCREMENT, stock INT NOT NULL DEFAULT 0, PRIMARY KEY (id) ); insert into goods(stock) values(100); 正常流程 检查库存,更新库存。 try { $pdo = new ...

PHP + Redis 简单消息队列

消息队列在高并发的时候,可以缓解对数据库的压力,下面使用 PHP + Redis(list) 简单模拟下这个过程。 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $type = isset($_GET['type']) ? 'read' : 'write'; switch ($type) { case 'write': // 随机获取内容,写入队 ...

PHP 排序算法

冒泡排序 冒泡排序比较简单,每一次循环从前往后依次比较,如果前者比后者大,则交换位置,就像泡泡越来越大一样,重复上面的循环,直到数组有序,最多 ...

PHP 设计模式

设计模式在很多语言都有用到,PHP 也不例外,下面是一些常见的 PHP 设计模式,做个记录。 工厂模式 平常我们获取实例,都是使用 new 来获取,如果在后期对类 ...

PHP Session 锁阻塞请求问题

PHP Session 默认是用文件存储的,当 Session 初始化时,即调用 session_start() 或者 session.auto_start 设置为 true 时,PHP 会在 session.save_path 下创建一个文件(如果是新会话)并锁定,然后把 Cookie ID 发送给服务器,例 ...

PHP 实现异步调用

PHP 实现异步调用在客户端的话比较简单,比如在页面加载完成后 jQuery 发送 AJAX 请求,或者嵌入到 img 标签,然后 src 指向请求,之前写的这篇文章 Nginx + Google Analytics 配置 就是使用 ...

PHP 调试追踪

今天有个 WordPress 的网站不能登录后台,打开页面显示下面的错误的信息: Fatal error: Call to undefined function wp_get_current_user() in /public_html/wp-includes/user.php on line 209 看了下代码,发现网站的 WordPress 版本才 3.5.1,现在最新版本为 ...

PHP 下子域名共享 Cookies

PHP 在子域名下共享 Cookies,比如登录信息。 直接使用 PHP 来处理 ini_set('session.cookie_path', '/'); ini_set('session.cookie_domain', '.domain.com'); 在 Yii2 下,需要在组件中对 session 与 user 进行设置 'components' => [ 'session' => [ // ... 'cookieParams' => [ 'path' => '/', 'domain' => ".domain.com", ...

php.ini 配置可修改范围

今天在修改 PHP 配置值 upload_max_filesize 时发现使用 ini_set 并不能生效,而有时候修改 display_errors 却能成功,觉得很困惑,Google 之后才知道原来 PHP 配置有可被设定范围。 简单的说,我 ...

PHP 调用雅虎汇率 API

调用地址是: http://download.finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s=CNYHKD=x CNYHKD 为必填,指人民币 (CNY) 与港币 (HKD) 的汇率,可以换成其他国家的货币代码 返回数据:“CNYHKD=x”,1.15 ...

使用 usort 函数对二维数组进行排序

PHP 提供了很多的排序函数,看了一下,好像没有对二维数组以上进行排序的函数,但是有一个 usort() 函数,可以使用用户自定义的函数 (也可以是匿名函数) 进行排 ...

PHP 实现 301 重定向

PHP 中实现 301 重定向挺简单的,代码也不复杂,无非就是对域名进行判断,不是新域名就使用 header 函数进行跳转,但是中途也出现一些问题,在此做个记录。 $host = 'www.new.com'; ...

网页中添加 Facebook 第三方登录

工作项目中需要使用 facebook 第三方登录,需要调用 facebook php api,其实代码什么的都已经写好了,但是在跳转到登录页面时产生错误,google 之后发现是 facebook app 的 ...