魏长东

weichangdong

东邪

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

虚拟机下linux装nginx

本来以为安装nginx很简单,就是下载然后编译安装,但是装完之后,只能静态起作用,php没法用(我这个原因很多,但是最基本的原因是nginx有些依赖库没有安装)。

tar xvzf nginx-1.7.10.tar.gz

cd  nginx-1.7.10

 ./configure --without-http_rewrite_module【编译的时候有报错,然后提示加这个参数--without-http_rewrite_module】

make 

make install

添加nginx的路径

export PATH=$PATH:/usr/local/nginx/sbin/

启动nginx

nginx -c /usr/local/nginx/conf/nginx.conf

curl http://localhost/ 已经可以看到欢迎的界面了

在我的电脑访问,http://192.168.137.129(这是我虚拟机linux的ip),也可以看到欢迎的界面

因为想找一些文件,就安装了locate这个软件。

yum  install mlocate

updatedb


静态页面没问题,但是访问php文件还是不行。

就修改了nginx.conf文件之后,但是启动后,提示nginx: [emerg] using regex "\.php$" requires PCRE library in /usr/local/nginx/conf/nginx.conf:65,是一些库缺失。

如是我决心重装nginx。因为rpm -qa|grep nginx,居然没有,所以只好去安装的目录,直接rm掉nginx的安装目录。

»»阅读全文

php登陆不用session,用cookie

之前的管理后台是用session实现的,但是现在不让用session了,就改成cookie模式了。

这是之前的代码(登陆存储session):

 

$_SESSION['manage']['showName'] = $rst['showName'];//为了和功能性的session区别开,
//特意用了一个manage的数组来存储admin相关的数值
        $_SESSION['manage']['userPid'] = $rst['userPid'];
        $_SESSION['manage']['gameName'] = $rst['gameName'];

修改之后的:

setcookie("manage[showName]", $rst['showName']);
        setcookie("manage[userPid]", $rst['userPid']);
        setcookie("manage[gameName]", $rst['gameName']);

»»阅读全文

protobuf实例-PHP

protobuf简介
protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,其最大的特点是基于二进制,因此比传统的XML表示高效短小得多。虽然是二进制数据格式,但并没有因此变得复杂,开发人员通过按照一定的语法定义结构化的消息格式,然后送给命令行工具,工具将自动生成相关的类,可以支持php、java、c++、python等语言环境。通过将这些类包含在项目中,可以很轻松的调用相关方法来完成业务消息的序列化与反序列化工作。

protobuf在google中是一个比较核心的基础库,作为分布式运算涉及到大量的不同业务消息的传递,如何高效简洁的表示、操作这些业务消息在google这样的大规模应用中是至关重要的。而protobuf这样的库正好是在效率、数据大小、易用性之间取得了很好的平衡。

»»阅读全文

http_build_query的相对函数

大家都知道php的http_build_query函数能把一个数组,变成一个url字符串,但是要想把一个url字符串变成一个数组呢?

比如需要吧这个字符串给变成key对应value的形式。

$get='act=ad.jump&androidid=a433bf43c56fbbe5&devid=7796bfce-639c-3664-8044-
da5fafd20d3c&version=1.8&klsso=qS4QHBw2zcaRVLH-5kOVBQ-qw8KYxsYU1ZoAYviEM0&k
lperson=n4e4Egh33WgqsHqKRJEsn.tq694_id4v3sqf_Akt3tDT_vdN11sfkyJfxSZLdSZ44Sf6h9
V2sQT9pgQ&userid=1256513&adid=1091&src=http://track.12trackway.com/aff_c?offer
_id=14952&aff_id=1873&aff_sub={clickid}&clickid=1091_7796bfce-639c-3664-8044-
da5fafd20d3c&ts=1425376774&sign=2f8cd4aa2956';
$new = explode('&',$get);
//print_R($new);
foreach ($new as $v) {
    $tmp = explode('=',$v);
    $$tmp[0] = $tmp[1];
    $ok[$tmp[0]] = $tmp[1];
}
print_r($ok);
extract($ok);
//echo $act;
//还原回去
//echo http_build_query($ok);

输出结果

Array (
[act] => ad.jump
[androidid] => a433bf43c56fbbe5 
[devid] => 7796bfce-639c-3664-8044-da5fafd20d3c
[version] => 1.8 
[klsso] => qS4QHBw2zcaRVLH-5kOVBQ-qw8KYxsYU1ZoAYviEM0 
[klperson] => n4e4Egh33WgqsHqKRJEsn.tq694_id4v3sqf_Akt3tDT_vdN11sfkyJfxSZLdSZ44Sf6h9V2sQT9pgQ
[userid] => 1256513
[adid] => 1091 
[src] => http://track.12trackway.com/aff_c?offer_id 
[aff_id] => 1873
[aff_sub] => {clickid}
[clickid] => 1091_7796bfce-639c-3664-8044-da5fafd20d3c 
[ts] => 1425376774
[sign] => 2f8cd4aa2956
) 

PHP SAPI之CLI

从版本 4.3.0 开始,PHP 提供了一种新类型的 SAPI(Server Application Programming Interface,服务端应用编程端口)支持,名为 CLI,意为 Command Line Interface,即命令行接口。顾名思义,该 SAPI模块主要用作 PHP 的开发外壳应用。CLI SAPI 和其它 SAPI 模块相比有很多的不同之处,我们将在本章中详细阐述。值得一提的是,CLI 和 CGI 是不同的 SAPI,尽管它们之间有很多共同的行为。

»»阅读全文

Tags: php的cli

本站给图片加水印

折腾了半天,本来想用外面的类文件实现图片加水印的功能,最后发现SAE自带的有,就用这个实现了。

$f = new SaeFetchurl();
$img_data = $f->fetch( '*test14.jpg' );
$img = new SaeImage();
$img->setData( $img_data );
$wcd = $img->getImageAttr($img_data);
$width = $wcd['width'];
$height = $wcd['height'];
$img->annotate('swordman.sinaapp.com',0.5,SAE_Static, array("name"=>SAE_SimSun, "size"=>floor($width/10), "weight"=>300, "color"=>"red"));
//string $txt, float $opacity = 0.5, constant $gravity = SAE_Static, array $font = array("name"=>SAE_SimSun, "size"=>15, "weight"=>300, "color"=>"black") 
$new_data = $img->exec(); // 执行处理并返回处理后的二进制数据
// 或者可以直接输出
$img->exec( 'jpg' , true );
//图片处理失败时输出错误码和错误信息
if ($new_data === false)
        var_dump($img->errno(), $img->errmsg());
?>

»»阅读全文

php使用redis学习

PhpRedis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系很有用;以下是redis官方提供的命令使用技巧:

Redis::__construct构造函数

1    $redis = new Redis();
connect, open 链接redis服务

»»阅读全文

Tags: redis

配置多个php-fpm

现在的项目,出现了cpu占用很少很少,不到0.1,但是php-fpm进程不够用。(是因为给别的公司提供的url发奖,需要等他们返回成功,但是一到高峰期,就返回特慢,平时大概这么久0.018244981765747,高峰这么久30.032204866409),就把我的php-fpm给拖住了,以至于影响别的功能。然后就想多开几个php-fpm,网上各种找资料,基本没有。因为大家貌似最多开的也就50个。最后我们技术老大,给配置了100*10个。之前游戏遇到的都是mysql把服务器拖垮了,这次是php把服务器拖慢了。

»»阅读全文

PHP abstract 和 interface的区别

1.php 接口类:interface

其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 :

»»阅读全文

PHP对象在内存中的分配

对像在PHP 里面和整型、浮点型一样,也是一种数据类,都是存储不同类型数据用的, 在运行的时候都要加载到内存中去用,那么对象在内存里面是怎么体现的呢?内存从逻辑上 说大体上是分为4 段,栈空间段、堆空间段、代码段、初始化静态段,程序里面不同的声明 放在不同的内存段里面,数据段(data segment)通常是指用来存放程序中已初始化且不为0的全局变量如:静态变量和常量;代码段(code segment / text segment)通常是指用来存放程序执行代码的一块内存区域,比如函数和方法;栈空间段是存储占用相同空间长度并且占用空间小的数据类型的地方,比如说整型1,10,100,1000,10000,100000 等等,在内存里面占用空间是等长的,都是64 位4 个字节。那么数据长度不定长,而且占有空间很大的数据类型的数据放在那内存 的那个段里面呢?这样的数据是放在堆内存里面的。如下图:

»»阅读全文