分类目录归档:PHP

Yum自定义版本安装PHP7

以前安装PHP都是要自己去网上选择一个特定版本,然后再下载到服务器安装,而且不同版本的相关命令也有所不同,学习记忆成本也非常高。现在官网可以通过安装yum的依赖库自由选择安装,非常的方便,今天来分享下。

1.新增Webtatic EL yum repository:

CentOS/RHEL 7.x:
 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
 rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

CentOS/RHEL 6.x:
 rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm

2. 安装php7.0 继续阅读

Laravel&Lumen安装Mongodb扩展

Laravel对于Redis扩展用起来非常方便,理论上来说对于Mongodb的扩展也应该如此,为此今天我们来记录下Laravel是如何支持Mongodb的。

1.添加composer依赖(jenssegers/mongodb):

composer require jenssegers/mongodb
或者
在composer文件添加"jenssegers/mongodb": "3.2",然后执行composer update

2. 配置Service Provider 继续阅读

PHP7添加Redis扩展

之前编译安装php7的时候,没有增加redis的扩展,现在需要调试程序需要php能够支持redis扩展。查了相关文件成功的操作安装扩展。

1. 从官方网站获取php的redis扩展包:wget https://github.com/phpredis/phpredis/archive/php7.zip

2. 解压后使用phpize建立php的外挂模块,然后通过./configure –with-php-config=/urs/bin/php-config来编译模块,这里特别需要注意的是php-config文件的路径每个系统不一样,可以考虑使用find / -name php-config来找到具体路径。

3. make & make install (如果make install提示权限不足的话,那就使用sudo make install)

4. vi /etc/php.ini, 新增extension=redis.so,如果php.ini不知道路径可以通过phpinfo()查看。

5. 重启nginx服务和php-fpm后可以通过phpinfo()查看redis扩展是否已经安装成功。

PS:phpize地址http://php.net/manual/en/install.pecl.phpize.php,当php编译完成后,php的bin目录下会有phpize这个脚本文件,他使得php在额外扩展某些需要的插件时能够实现插拔式安装,这是非常方便的。

Composer调试自己的工程

最近终于把爬虫框架写完了,刚一开始调试,就遇到了很奇葩的问题,明明本地已经按照命名空间的方式书写好了代码。可是用代码一测试,却提示各种对应的类找不到。这是为啥呢?缓存还是什么的?

始终并不明白为啥。总不能每次都提交到github,然后还的使用package.org的依赖库来下载最新的代码吧。因为那个国际依赖库,国内下载巨慢无比,简直不能忍受。在网上搜索了一圈,终于在发现了composer存在某个命令可以更新本地vendor下面的代码,使得最新编写的代码可以生效:

composer dump-autoload --optimize

以此文章来纪念下这个困扰我的问题。哈哈

Api对接之-单例模式

这次的api对接,除了使用适配器模式和工厂模式,同时也用到了单例模式。何为单例模式,单例模式应该算是设计模式中较为简单的模式了。它确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

在计算机系统中,线程池、缓存、日志对象、对话框、打印机、数据库操作、显卡的驱动程序常被设计成单例,其中数据库操作算是比较常见的一个应用。 继续阅读

Api对接之-工厂模式

这次的api对接,除了使用适配器模式,同时也用到了工厂模式。首先我们来定义下工厂模式是什么?优点是什么?工厂模式的优点就在创建对象上。建立一个工厂(一个函数或一个类方法)来制造新的对象,它的任务就是把对象的创建过程都封装起来,创建对象不是使用new的形式了。而是定义一个方法,用于创建对象实例。

做过开发的人可能都知道,数据库的链接需要配置不同的数据库参数来创建数据库实例。只需要参数不同,就能够创建不同的数据连接对象。在上文中我们提到了适配器模式,根据每个第三方平台,我们会编写不同的适配类。那么如何在上层调用代码的地方保持不变,就需要使用工厂模式,根据参数获取不同的适配类对象。然后再调用适配类的具体方法。 继续阅读

Api对接之-适配器模式

最近需要对接第三方独立平台的推送订单,同步库存以及同步包裹信息。考虑不同平台数据接口的差异,以及我们自有系统的维护便利性,这里采用了适配器模式来处理。

何为适配器模式:其核心思想把对某些相似的类的操作转化为一个统一的“接口”(这里是比喻的说话)–适配器,或者比喻为一个“界面”,统一或屏蔽了那些类的细节。适配器模式还构造了一种“机制”,使“适配”的类可以很容易的增减,而不用修改与适配器交互的代码,符合“减少代码间耦合”的设计原则。 继续阅读

PHP如何结束正在运行的进程

之前看了Java的部署代码,发现需要每次需要手动结束正在运行的进程,然后再启动新的部署代码。所以我在考虑如何用程序自动实现这个功能。今天看程序的源码正好看到这个功能,所以来整理下相关的知识点以及描述如何实现。

1.第一步是如何查询相关关键词的进程。(PS:我先执行一个命令php artisan testQuery,内容就是sleep(10000)). 继续阅读

PHP使用github和packagist创建自己的composer工程

最近打算写个自己的应用,放在github上,然后做成自己的composer镜像,这样大家用着就会非常方便了,说干就干,其中简单的步骤就不再赘述,网上有很多的例子。

1.新建一个github的私有工程。

2. 本地使用composer初始化一个工程。(使用composer init初始化,选择psr-4规范),类似的例子如下: 继续阅读