:

解决 Yii2 composer 安装时出现的 Unzip 错误

发布于:2019-8-6 16:45 作者:song100e 浏览:7 
最近公司有一个项目需要重构, 打算从 TP5 转到 Yii2,这两天着重搭建开发环境
在使用 composer 安装 Yii2 高级模板时出现如图这样的错误信息:
Unzip with unzip command failed, falling back to ZipArchive class。
2019-xhm.PNG

阅读全文>>

0

PHP7内核学习起步!

发布于:2019-2-15 17:48 作者:song100e 浏览:58 分类:内核剖析学习

        PHP7 版本的发布,Zend 引擎被再次重写,并以 Zend Engine 3.0 的身份亮相,使得 PHP 语言的性能得到大幅度提升,大量测试显示 PHP7 比 PHP5.6 在各种开源项目中有 60% 到 200% 的性能提升。学习和研究 PHP7 内核对于提升个人使用水平和内功很有必要。

点击查看原图


一,源码下载及安装

$ wget http://php.net/distributions/php-7.0.12.tar.gz
$ tar zxvf php-7.0.12.tar.gz
$ cd php-7.0.12/
$ ./configure --prefix=/usr/local/php-7.0.12 --enable-debug --enable-fpm
$ make && sudo make install


二,目录概览

以 php-7.0.12 为例,下面是每个目录的说明。

目录 说明
TSRM 线程相关安全的实现
Zend PHP 解析器的核心实现
build linux 下编译相关的目录
ext PHP 的扩展
main PHP 的主要代码
netware 网络目录,socket 的定义与实现
pear PHP 扩展及应用的代码仓库
sapi PHP 的应用层接口
scripts Linux 下的脚本目录
tests 测试脚本目录
travis 用于构建,非 PHP 特有目录
win32 Windows 下编译 PHP 的相关脚本


三,核心目录

  1.         sapi 全称 Server API,负责 PHP 对外提供服务规范,它定义了结构体 sapi_module_struct,该结构体定义了模式启动、关闭、激活、失效等多个钩子函数指针,每个模式将这些函数指针指向自己的函数。
  2.         main 目录的作用是承接 SAPI 的请求,分析出要执行的脚本文件和参数,并对环境和配置进行初始化,比如初始化变量和常量、注册函数、解析配置文件、加载扩展等等。
  3.         Zend 目录就是大家所熟知的 Zend 引擎,是 PHP 最核心的部分,主要负责 PHP 的语法实现、内存管理及脚本的编译运行环境等,它由编译器、执行器两部分组成。编译器负责将 PHP 代码进行词法、语法分析,并生成抽象语法树,然后进一步编译为 opcode,opcode 是 Zend 虚拟机可识别的指令。
  4.         ext 是 extension 的缩写,它是扩展 PHP 内核功能的一种方式,分为 PHP 扩展 与 zend 扩展,都支持用户自定义开发,这两种都比较常见,PHP 扩展有 gd、json、date、array 等,而我们熟知的 opcache 就是 Zend 扩展。
  5.         TSRM 全称叫做 Thread Safe Resource Manager,也就是线程安全资源管理器。


标签: PHP7

0

设置PHP curl超时

发布于:2019-1-30 13:49 作者:song100e 浏览:38 分类:PHP
    PHP CURL的超时设置有两个 CURLOPT_CONNECTTIMEOUT CURLOPT_TIMEOUT,他们的区别是:
    CURLOPT_CONNECTTIMEOUT:在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载、下线或者崩溃等可能状况。
    CURLOPT_TIMEOUT:从服务器接收缓冲完成前需要等待多长时间,如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。
应用举例:
    使用 curl 下载 MP4 文件是一个对开发人员来说不错的例子,CURLOPT_CONNECTTIMEOUT 可以设置为10秒,标识如果服务器 10 秒内没有响应,脚本就会断开连接,CURLOPT_TIMEOUT 可以设置为 100 秒,如果 MP3 文件 100 秒内没有下载完成,脚本将会断开连接。

需要注意的是:CURLOPT_TIMEOUT 默认为 0,意思是永远不会断开链接。所以不设置的话,可能因为链接太慢,会把 HTTP 资源用完。

php_curl.PNG

标签: curl

0

升级PHP到7.3

发布于:2019-1-26 13:56 作者:song100e 浏览:36 分类:PHP

PHP 7.3声称速度比PHP 5快3倍还多,再加上最近有点闲的蛋疼,准备升级PHP到最新版本,本来以为很简单,结果我错了,底层支撑技术差别还是很大的。

阅读全文>>

标签: PHP7.3

0

UEditor上传结合又拍云图片存储

发布于:2018-12-13 11:40 作者:song100e 浏览:49 分类:PHP

UEditor文件目录

ueditor_upyun.PNG

阅读全文>>

标签: UEditor upyun

0

thinkphp5 where between and 的用法

发布于:2018-12-6 17:41 作者:song100e 浏览:43 分类:ThinkPHP5
$where[] = ['create_time', 'between time', [$start_time, $end_time]];

$where['create_time'] = ['between time', [$start_time, $end_time]];

阅读全文>>

标签: between

0

phpExcel 设置单元格颜色和背景色

发布于:2018-12-5 13:50 作者:song100e 浏览:50 分类:PHP

这两天又被 PHPExcel 搞惨了, 遂记录加强印象。

新增颜色常量值,具体见图片,定义在 \PHPExcel\PHPExcel\Style\Color.php 

最后导出箭头所指的行需求:

阅读全文>>

标签: PHPExcel

0

Laravel 5.7 框架初识

发布于:2018-11-30 17:40 作者:song100e 浏览:53 分类:Laravel
1,Github (https://github.com/laravel/laravel)上下载 zip 包, 然后用 unzip 命令解压。(laravel 版本 如果是 5.5 php 版本一定要是 7 以上)。

2,配置好nginx,调整好hosts,这时我们发现 没有 vendor 包,运行 composer install(前提是已安装 composer)。

阅读全文>>

标签: Laravel

0

Deprecated: Automatically populating $HTTP_RAW_POST_DATA

发布于:2018-11-28 9:56 作者:song100e 浏览:47 分类:PHP

今天接手一个新的系统维护任务,上来就报了一个警告如图, 接着返回正确信息:

点击查看原图


这个问题和PHP版本有关系,PHP 5.6已经废弃了$HTTP_RAW_POST_DATA。

解决方法:
修改php.ini
always_populate_raw_post_data = -1

然后重启服务。

阅读全文>>

标签: Deprecated

0

PHP使用xpath解析XML

发布于:2018-11-2 17:13 作者:song100e 浏览:51 分类:PHP
    Xpath是什么?

    Xapth主要用来在XML文档中查询信息的工具,通过使用路径表达式可以解析XML文件,读取XML文件中的数据。

需要PHP解析的XML文档:

   

<?xmlversion="1.0"encoding="gbk"?>
<LeapsoulXML> 
<LeapsoulInfo> 
<name>PHP解析Xpath</name>
	<website>https://blog.haoqingsong.xyz</website>
</LeapsoulInfo>
<LeapsoulInfo> 
	<name>
		<keywords>
			<keywordkeyid='1'>青松博客</keyword>
			<keywordkeyid='2'>haoqinsong</keyword>
			<keywordkeyid='3'>song100</keyword>
		</keywords>
		<seo>SEO</seo>
	</name>
</LeapsoulInfo>
<WebInfo> 
	<name>青松博客</name>
	<website>https://blog.haoqingsong.xyz</website>
</WebInfo>
</LeapsoulXML>


Xpath语法教程

/表示从XML文件中的根节点开始解析
//表示在XML文件中匹配已选择的当前节点,且不考虑其位置关系(类似于SQL中模糊查询)
. 表示选取当前节点
..表示选取当前节点的父节点
@表示匹配具体的节点或属性

PHP解析XML实例第一步
$xml = simplexml_load_file('leapsoulcn.xml');
说明:使用PHP SimpleXML载入需要解析的XML文档。


实例一:

foreach($xml->xpath('LeapsoulInfo') as $value) { 
    print_r($value);
}
    说明:在这个Xpath实例中通过Xpath查询指定节点,以数组形式返回其所有的子节点,并通过PHP的print_r函数打印出最终的数组结构。


实例二:

foreach($xml->xpath('LeapsoulInfo/name') as $value) { 
    print_r($value);
}
    说明:在这个Xpath实例中通过Xpath路径表达式的方式指定需要Xapth查询的某个特定子节点,以数组形式返回这个子节点的元素。


实例三:

foreach($xml->xpath('//name') as $value) { 
    print_r($value);
}
    说明:在这个Xpath实例中通过使用//表示使用Xpath查询XML文件中所有name节点的元素,与上一个Xpath实例的区别在于name没有位置关系。


实例四:

foreach($xml->xpath('LeapsoulInfo//name') as $value) { 
    print_r($value);
}
    说明:PHP解析XML文件中指定节点下的某个子节点,以数组形式返回其所有子节点,忽略指定的这个子节点在LeapsoulInfoXML中的位置关系。

实例五:

foreach($xml->xpath("//name/keywords/keyword[@keyid='1']") as $value) { 
    print_r($value);
}
    说明:在需要PHP解析的XML文件中通过Xpath查找keyid=1的元素,以数组形式返回。

标签: Xpath

0

1 2 3 4 5