thinkphp3.2 cli模式的正确使用方法

最近要使用thinkphp3.2版本的cli模式,手动执的话没有问题,比如php /www/index.php home/article/get 这样没有问题,但是一般用cli模式都是定时任务比较多,这个时候写到定时任务的时候,比如 0 * * * * * php /www/index.php home/article/get 这样就会出现引入ThinkPHP.php失败的问题,这个问题算是比较容易解决的,但是后来还有其他各种报错,经过查看相关核心代码,终于找到无需修改代码,就可以轻易使用cli模式的方法。

步骤如下:
1、官方下载的框架文件里面的index.php文件引入其他文件使用的是相对路径,这导致了定时执行的时候引入ThinkPHP.php文件不存在的问题,修改成绝对路径即可。
define( ‘APP_PATH’, dirname(__FILE__).’/Application/’ );
require dirname( __FILE__).’/ThinkPHP/ThinkPHP.php’;

2、思维要倒回去第半步,刚刚说index.php文件的相对路径跟绝对路径的问题,但是执行cli模式的时候,我们的入口文件要有别于通过web服务访问的index.php文件,比如增加cli模式的入口文件cli.php,内容跟index.php的一样,同时增加一句话
define(‘APP_MODE’,’cli’);
定义APP的执行模式。此时,我们有两个入口文件,一个是web服务访问方式的index.php,另一个是cli模式访问的cli.php
3、在路径 /ThinkPHP/Mode 下面有个文件,名字叫做common.php ,复制一份出来,命名为cli.php,然后把里面引入日志类的代码注释或者删除掉
‘Think\Log’ => CORE_PATH . ‘Log’.EXT,

4、删除缓存下面的所有缓存——记得是所有

5、再啰嗦一句,以后cli模式调用的时候,就用cli.php入口文件,比如定时任务 0 * * * * php /www/cli.php home/article/get ,如果是web服务访问,则依然使用index.php文件

 

原文出自 兴奋小猪 http://www.xingfenxiaozhu.com/2015/11/14/thinkphp-3-2的cli模式(命令行模式)的正确使用方法/ 转载请注明出处

php-phantomjs中文API整理的集合DEMO

安装:

首先要安装composer

安装composer中文镜像http://www.phpcomposer.com/,然后重启

创建composer.json

{
        "scripts": {
            "post-install-cmd": [
                "PhantomInstaller\\Installer::installPhantomJS"
            ],
            "post-update-cmd": [
                "PhantomInstaller\\Installer::installPhantomJS"
            ]
        },
        "config": {
            "bin-dir": "bin"
        },
        "require": {
                "jonnyw/php-phantomjs": "4.*"
        }
}

然后安装

进入项目文件夹运行下面的的命令即可 composer require “jonnyw/php-phantomjs:4.*”

运行测试代码

<?php

    require "vendor\autoload.php";
    use JonnyW\PhantomJs\Client;
    // require_once 'vendor_phantomjs/jonnyw/php-phantomjs/src/JonnyW/PhantomJs/Client.php';

    client = Client::getInstance();client->getEngine()->setPath('E:/xampp/php/phantomjs.exe');
    //上面一行要填写自己的phantomjs路径
    /** 
     * @see JonnyW\PhantomJs\Http\PdfRequest
     **/
    delay = 7;request = client->getMessageFactory()->createPdfRequest('https://www.baidu.com/', 'GET', 5000); //参数里面的数字5000是网页加载的超时时间,放在网络问题一直加载,可以不填写,默认5s。request->setOutputFile('E:/document.pdf');
    request->setFormat('A4');request->setOrientation('landscape');
    request->setMargin('1cm');request->setDelay(delay);//设置delay是因为有一些特效会在页面加载完成后加载,没有等待就会漏掉

    /** 
     * @see JonnyW\PhantomJs\Http\Response 
     **/response = client->getMessageFactory()->createResponse();

    // Send the requestclient->send(request,response);

demo说明:

浏览全部

centos 安装 php-v8js

Centos 安装v8js

yum install php-pear

yum install re2c

yum install v8-devel

pecl install v8js-0.1.3
// if failed, need to download v8js-0.1.3 and manually install it

// modify b8js.cc and add the blow info line 1

#define PHP_V8_VERSION “0.1.3”

phpize
./configure –with-v8js
make
make test
make install

echo “extension=v8js.so” >> /etc/php.ini

ubuntu 安装 php-v8js扩展

直接pecl install v8js……报错。。

root@ubuntu:/usr/local/src/v8js-1.3.5# ./configure --with-php-config=/usr/local/php7/bin/php-config 
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... cc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether cc accepts -g... yes
checking for cc option to accept ISO C89... none needed
checking how to run the C preprocessor... cc -E
checking for icc... no
checking for suncc... no
checking whether cc understands -c and -o together... yes
checking for system library directory... lib
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for PHP prefix... /usr/local/php7
checking for PHP includes... -I/usr/local/php7/include/php -I/usr/local/php7/include/php/main -I/usr/local/php7/include/php/TSRM -I/usr/local/php7/include/php/Zend -I/usr/local/php7/include/php/ext -I/usr/local/php7/include/php/ext/date/lib
checking for PHP extension directory... /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303
checking for PHP installed headers prefix... /usr/local/php7/include/php
checking if debug is enabled... no
checking if zts is enabled... no
checking for re2c... re2c
checking for re2c version... 0.13.5 (ok)
checking for gawk... gawk
checking for V8 javascript Engine... yes, shared
checking for V8 files in default path... found in /usr
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking how to run the C++ preprocessor... g++ -E
checking for C standard version... c++11
checking how to allow c++11 narrowing... 
checking for libv8_libplatform... checking for libv8_libplatform... configure: error: could not find libv8_libplatform library

 

系统自带的libv8版本太低了。

sudo add-apt-repository ppa:pinepain/libv8
sudo apt-get update

 

卸載原先的libv8-dev,執行apt-get install libv8-6.6-dev

nice

Build process completed successfully
Installing '/usr/lib/php5/20121212/v8js.so'
install ok: channel://pecl.php.net/v8js-0.6.4
configuration option "php_ini" is not set to php.ini location
You should add "extension=v8js.so" to php.ini

 

Apache虚拟主机配置(多个域名分别绑定多个目录)

Apache虚拟主机配置(多个域名访问多个目录)

一、windows下:

为了方便管理虚拟主机,我决定使用一种方法,那就是修改httpd-vhosts.conf文件。
第一步首先要使扩展文件httpd-vhosts.conf生效:
1. 打开 apache/conf/httpd.conf 文件
2. 找到 # Include conf/extra/httpd-vhosts.conf
3. 去掉前面的注释符#号
4. 打开 apache/conf/extra/httpd-vhosts.conf
5. 添加以上的多端口或多域名代码(这里以多域名为例):
6. 打开apache2/conf/extra/httpd-vhost.conf

二、centos7下的apache2.4,直接在/etc/httpd/conf.d/下添加你的 xxx.conf即可(xxx随你取,可以是www)

在里面添加入下:
示例:
<VirtualHost 192.168.1.1:80>
ServerAdmin [email protected] (你的邮箱)
DocumentRoot /usr/local/apache2/htdocs/Joomla(此虚拟主机的根目录)
ServerName www.abc.com(此处为域名)
ErrorLog /usr/local/apache2/htdocs/abc/error_log (日志)
TransferLog /usr/local/apache2/htdocs/abc/access_log (日志)
</VirtualHost>
<VirtualHost 192.168.1.1:80>
ServerAdmin [email protected] (你的邮箱)
DocumentRoot /usr/local/apache2/htdocs/bbs (此虚拟主机的根目录)
ServerName www.bbs.com (此处为域名)
ErrorLog /usr/local/apache2/htdocs/bbs/error_log (日志)
TransferLog /usr/local/apache2/htdocs/bbs/access_log (日志)
</VirtualHost>
此例子添加了一个www.abc.com的主机和一个www.bbs.com的虚拟主机。
注意:添加了虚拟主机之后必须重启apache服务。
如果是服务器的话,直接访问域名便可以访问相应的虚拟主机网站了。
如果是做测试环境(我的便是测试环境),可将真机的hosts文件修改,使得测试域名和服务器(虚拟机)ip地址关联,这样在真机访问域名,成光转到相应的虚拟主机网站的时候即成功。

Centos下Yum安装PHP5.5,5.6,7.0

注意:一定要先安装Mysql后再安装PHP,否则安装其他版本的mysql的时候mysql-libs会报错,当然,卸载了mysql-libs也就可以继续安装了。

1.检查当前安装的PHP包
yum list installed | grep php
如果有安装的PHP包,先删除他们
yum remove php*

2、安装rpm源包
Centos 5.X
rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm
CentOs 6.x
rpm -Uvh http://mirror.webtatic.com/yum/el6/latest.rpm
CentOs 7.X
rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

浏览全部