魏长东

weichangdong

东邪

正在查看: php 分类下的文章(第 5 页 / 共 96 篇)

poedit php gettext方式实现UTF-8国际化多语言(i18n)

开始应用:

步骤一:搭建环境(服务器已经完成,环境已经搭建好了) 
1、首先查看你的php扩展目录下是否有php_gettext.dll这个文件,如果没有,这就需要你下载一个或是从其他地方拷贝一个,然后放到php扩展目录。
2、打开php.ini,查找”;extension=php_gettext.dll“ ,然后去除注释,重启apache。

若一切顺利,就可以在 phpinfo() 中看到 gettext 字样,至此服务器环境配置完毕。

步骤二:假如我们要翻译test.php页面里的hello word!这句话。

»»阅读全文

解决phpmyadmin 访问卡慢等问题

亲测可行。

第一步, 打开 ./version_check.php文件. 找到以下代码.

if (isset($_SESSION['cache']['version_check'])
    && time() < $_SESSION['cache']['version_check']['timestamp'] + 3600 * 6
) {
    $save = false;
    $response = $_SESSION['cache']['version_check']['response'];
} else {
    $save = true;
    $file = 'http://www.phpmyadmin.net/home_page/version.json';
    if (ini_get('allow_url_fopen')) {
        $response = file_get_contents($file);
    } else if (function_exists('curl_init')) {
        $curl_handle = curl_init($file);
        curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
        $response = curl_exec($curl_handle);
    }
}

»»阅读全文

CI框架下hook的使用实例

最近在使用CI框架,看到框架/system/core/CodeIgniter.php代码好多地方出现类似这样的代码$EXT->_call_hook('pre_controller');但是又框架又看不到实际的代码,网上搜了下,原来这是所谓的钩子,我的理解是作者留下的口子,可以在这做些文章。

就拿这个代码$EXT->_call_hook('pre_controller');做例子吧。

首先需要在application/config/config.php开启这个支持,$config['enable_hooks'] = TRUE;设置成true就是开启。

然后在/application/config/hooks.php文件配置钩子到时候具体实施的对象。

»»阅读全文

thinkphp使用cli模式

看到thinkphp有个Mode文件夹,是不同的运行模式,因为工作中,经常使用命令行下执行php文件,比如为某个系统添加后台执行的crontab。如是就想试试搭建cli的模式。

这是Mode下的文件列表截图

tp-cli1.png

为了实现这个功能,我折腾其实花费了不少气力,但是最后发现其实改动很少,需要做的也很少,但是中间的确是一步一步的调试的。

»»阅读全文

php的invoke和invokeArgs函数

看一个框架,没有往常框架的先new一个类,然后执行method,原来是通过 ReflectionMethod的invoke和invokeArgs函数实现的。直接把手册的例子拿来了。

<?php
class HelloWorld {

    public function sayHelloTo($name) {
        return 'Hello ' . $name;
    }

}

$reflectionMethod = new ReflectionMethod('HelloWorld', 'sayHelloTo');
echo $reflectionMethod->invokeArgs(new HelloWorld(), array('Mike'));
?>

执行输出:Hello Mike

»»阅读全文

Windows下使用Composer安装yii2

YII简介

Yii Framework是一个基于组件、用于开发大型 Web 应用的高性能 PHP 框架。Yii提供了今日Web 2.0应用开发所需要的几乎一切功能。Yii是最有效率的PHP框架之一。Yii是创始人薛强的心血结晶,于2008年1月1日开始开发。

Composer简介

Composer 是PHP中用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件。

Windows安装Composer:

一、下载Composer

官网下载:https://getcomposer.org/download/

二、开启PHP的openssl支持

修改D:\WAMP\bin\php\php5.4.12配置文件php.ini

去掉注释;

三、安装Composer

一路"next"安装完毕。

安装完毕会提示你重新打开CMD命令行使用。

安装Yii2 - advanced 模板

一、下载yii2 - advanced 模板

官网下载:http://www.yiiframework.com/download/

下载完毕解压至
C:\xampp\htdocs\

二、通过composer安装

打开CMD,跳转到目录
C:\xampp\htdocs\yii2

我们来生成一个名为“yii2wcd”的app。

输入命令:

composer create-project --prefer-dist --stability=dev yiisoft/yii2-app-advanced ../yii2wcd

等待… …出现如下界面,表示安装成功。

»»阅读全文

php安装protobuff和运用

git clone https://github.com/allegro/php-protobuf/ ,把文件下载下来。

然后mv或者cp到/usr/local/php/include/php/ext/目录(安装php扩展的目录)下

cd进去,pwd

/usr/local/php/include/php/ext/php-protobuf

phpize 
./configure 
make && make install 

然后

php -m|grep pro

protobuf   //有这个扩展

然后开始实际应用 

»»阅读全文

延迟输出ob_start学习

有时候处理问题,比如对好多uid循环处理,然后逐个输出处理uid的结果,ok或者error。

除了直接输出以外,还可以延迟输出。

ob_start();
for ($i=0;$i<10;$i++) {
    echo "$i<br />";
}
$buffer = ob_get_contents();
ob_end_clean();
echo 'hello'.PHP_EOL.$buffer;//会输出for循环的内容
//echo 'hello'.PHP_EOL;这里不会输出for循环的数据

php长连接workerman学习

在linux虚拟机环境下安装了workerman,开始不知道从哪开始,最后自己搞了几个文件,折腾出了几个效果。

虽然暂时不知道内部代码是咋实现的,但是表面的应用层算是知道了点皮毛。

启动的效果(因为是监听不同的端口,所以虽然启动了两个,也不冲突,I think)。

workerman-0.jpg

显示http的形式:
建立了一个http.php文件。代码都是来自workerman的说明文件。

<?php
require_once './Workerman/Autoloader.php';
use Workerman\Worker;

// #### http worker ####
$http_worker = new Worker("http://127.0.0.1:10000");
$http_worker->count = 4;
$http_worker->onMessage = function($connection, $data)
{
    // send data to client
    $connection->send("hello world $data\n");
};

// run all workers
Worker::runAll();
我的理解是当127.0.0.1的10000端口有数据的话,就会给他返回hello world加上发送过来的数据(经自己
测试,还会返回http的头信息)。

»»阅读全文

php的socket学习笔记

用php的socket实现了:

客户端发送信息=》服务器收到信息=》客户端收到服务器的返回信息=》显示出来

代码是网上copy别人的,自己搭建环境执行了下。

server.php 服务端文件

<?php
error_reporting(E_ALL);
set_time_limit(0);
//ob_implicit_flush();
$address = '127.0.0.1';
$port = 10005;
//创建端口
if( ($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
	echo "socket_create() failed :reason:" . 
socket_strerror(socket_last_error()) . "\n";
}
//绑定
if (socket_bind($sock, $address, $port) === false) {
	echo "socket_bind() failed :reason:" . 
socket_strerror(socket_last_error($sock)) . "\n";
}
//监听
if (socket_listen($sock, 5) === false) {
	echo "socket_bind() failed :reason:" . 
socket_strerror(socket_last_error($sock)) . "\n";
}
do {
	//得到一个链接
	if (($msgsock = socket_accept($sock)) === false) {
		echo "socket_accepty() failed :reason:".
socket_strerror(socket_last_error($sock)) . "\n";
		break;
	}
	//welcome  发送到客户端
	$msg = "<font color='red'>server send:welcome</font><br/>";
	socket_write($msgsock, $msg, strlen($msg));
	echo 'read client message\n<br />';
	$buf = socket_read($msgsock, 8192);
	$talkback = "received message:$buf\n<br/>";
	echo $talkback;//在服务端命令行可以看到的此输出
	if (false === socket_write($msgsock, $talkback, strlen($talkback))) {
		echo "socket_write() failed reason:" . 
socket_strerror(socket_last_error($sock)) ."\n";
	} else {
		echo 'send success';//在服务端命令行可以看到的此输出
	}
	socket_close($msgsock);
} while(true);
//关闭socket
socket_close($sock);
?>

»»阅读全文