2011 年 12 月 30 日

solaris使用opencsw安装软件包

Filed under: Linux技术 - 30 Dec 2011

在solaris下安装或者更新软件通常有3种方法:
1.下载源代码编译安装。
2.从sunfreeware.com下载pkg包,使用pkgadd安装。
3.下载pkg-get工具(类似于redhat的yum),在线更新软件包,这种方法其实是对第二种方法的自动化封装实现。
很多时候,我们要安装的软件依赖与其他一些的包,这是我们可以综合使用上面的三种方法:
①对于一些小的或者我们不打算定制安装的包使用方法2或者3安装,更快捷。
②对于需要定制安装或者sunfreeware.com中未提供的包采用方法1安装。不幸的是,仍然有
一些软件包无法使用SunStutio(solaris提供的gcc编辑器)进行编译。通常是因为软件包在编译时只考虑gun gcc,没考虑SunStutio。这时我们必须使用gun gcc编译,我们需要设置以下环境变量:
export CPP=”/usr/sfw/bin/gcc -E”
export CC=/usr/sfw/bin/gcc
export CXX=/usr/sfw/bin/g++
然后再编译。但是问题又来了,我们的依赖包也许还要依赖其他的包,我们可能需要手工编译很多包最终才能成功!

so,opencsw降临!

她致力于解决这些问题。opencsw提供pkgutil包管理工具,通过在线的方式更新软件包,同时解决软件的依赖问题。
我们只需要两步设置:
①安装opencsw: pkgadd -d http://get.opencsw.org/now ,默认安装在/opt/csw/内
②使用pkgutil安装软件包,比如:/opt/csw/bin/pkgutil –install libmagic,默认安装到/opt/csw/lib/下,然后建立相关库到/usr/local/lib/的链接或者添加/opt/csw/lib/到动态链接库环境变量.到这里一切ok,我们可以继续编译安装软件。
不得不说opencsw提供了一种更简单、方便的方式安装某些软件。

目前支持的软件和包列表:http://www.opencsw.org/get-it/packages/
其他的一些设置可以到官方网站查询:http://www.opencsw.org/

2011 年 12 月 26 日

c语言指针学习一

Filed under: PHP/Python/C - 26 Dec 2011

#include <stdio.h>
void pointer1()
{
/*
* p为int型的指针,p++只跳到数组的下一个元素,数组名a代表&a[0],即代表第一个元素的起始地址
* 统一数组在内存中的地址是连续的
*/
int a[10],*p,i;
for(i=0;i<10;i++)
{
scanf(“%d”,&a[i]);
}
for(i=1,p=a;p<a+10;p++,i++)
{
printf(“a[%d] 的值是:%d,内存地址是:%d\n”,i,*p,p);
}
}

2011 年 12 月 18 日

php截取字符串乱码问题

Filed under: PHP/Python/C - 18 Dec 2011

substr()函数用来截取字符串,是按字节截取,mb_substr()是按照字符截取,并且可以指定编码(以utf-8为例)。

比如:

$str = “测试A4abcd截取字符串乱码问题!”;
$sub = substr($str, 0,5);
var_dump ($sub);
echo bin2hex($sub);


因为utf-8编码中一个汉字占三个字节,例子中截取了第一个汉字和第二个汉字的前两个字节,共5个字节。第二个字节乱码。而采用mb_substr()则不会出现乱码:

类似的还有很会出现乱码的函数。php提供了一批多字节处理函数(mb_开头),用来处理汉字等多字节编码。

比如使用mb_split()代替explode()。

 

 

说明
string substr ( string $string , int $start [, int …

2011 年 12 月 3 日

php curl获取https内容

Filed under: PHP/Python/C - 03 Dec 2011

$url = ‘https://www.alipay.com’;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FAILONERROR, 0);

$data = curl_exec($ch);
curl_close($ch);
echo ($data);

2011 年 12 月 2 日

SSL negotiation failed: SSL disabled due to library version mismatch

Filed under: Linux技术 - 02 Dec 2011

svn: PROPFIND of : SSL negotiation failed: SSL disabled due to library version mismatch ()

There were lots of threads in many forums that suggested re-emerging openssl and svn, but that didn’t do it for me.

Finally I stumbled upon a thread …

2011 年 11 月 26 日

腾讯微博oauth认证

Filed under: PHP/Python/C - 26 Nov 2011

腾讯微博api采用OAuth 1.0a进行授权认证,除了采用官方提供的php-sdk进行开发外还可以使用php语言本身的oauth扩展。
首先下载安装oauth扩展。
windows版本下载地址:http://downloads.php.net/pierre/php_oauth-1.1.1-dev-5.3-nts-vc9-x86.zip

linux版本使用pecl下载安装:

pecl install oauth

我们需要三个页面:ten.php是跳转页面,跳转到授权页面,back.php是回调地址,用户授权完成后会跳,demo.php演示页面,用得到的授权信息发送一条微博。

ten.php…

solaris 编译安装nginx+php5.3.8(php-fpm)

Filed under: PHP/Python/C,web服务器 - 26 Nov 2011

历史记录:

2011-12-19 修改,添加 fastcgi_intercept_errors on;当请求一个不存在的php页面时原来返回空,添加后返回404错误。

php从5.3.3版本开始内置FPM(FastCGI 进程管理器),用于替换PHP FastCGI的大部分附加功能,对于高负载网站是非常有用的。

它的功能包括:

支持平滑停止/启动的高级进程管理功能;
可以工作于不同的uid/gid/chroot环境下,并监听不同的端口和使用不同的php.ini配置文件(可取代safe_mode的设置);
stdout 和 stderr 日志记录;
在发生意外情况的时候能够重新启动并缓存被破坏的opcode;
文件上传优化支持;
“慢日志” – 记录脚本 (不仅记录文件名,还记录PHP backtrace信息,可以使用ptrace或者类似工具读取和分析远程进程的运行数据) 运行所导致的异常缓慢;
fastcgi_finish_request() – 特殊功能:用于在请求完成和刷新数据后,继续在后台执行耗时的工作 (录入视频转换、统计处理等);
动态/静态子进程产生;

FPM带来的好处还远不止这些,在此种模式下php本身对apache和nginx等web服务器的依赖程度也更低,服务器软件主要起到请求转发的功能,即将用户的请求转发到FPM监听的端口,php处理后返回结果供web显示。因此选用更轻量级以及并发处理更高的nginx做web服务器成为首选。

 

一下为本人在solaris10  x86机器上的安装记录:

1.下载并安装pkg-get工具:
wget http://sunfreeware.com/BOLTpget.pkg
pkgadd -d BOLTpget.pkg
2.在线更新php依赖库:
pkg-get install gd-2.0.35
pkg-get install jpeg-8a
pkg-get install libpng-1.2.10
pkg-get install libiconv-1.9.2
pkg-get install openssl-1.0.0e
pkg-get install curl-7.12.2 (此处curl版本不要装太高的)
pkg-get install openldap-2.4.9
pkg-get install sasl-2.1.25
pkg-get install libnet
pkg-get …

2011 年 11 月 10 日

谷歌免费dns服务

Filed under: 其它相关 - 10 Nov 2011

      国内某些地区的运营商会劫持dns,比如山东联通,当用户访问一个不存在的网址,dns查找不到对应的IP,应该返回页面载入出错页面,但是山东联通会重定向到它自己的一个导航页,非常令人恶心,使用谷歌dns可以避免此问题。
目前谷歌提供了两个dns:8.8.8.8 和 8.8.4.4

2011 年 11 月 9 日

php 3des加密解密,兼容java

Filed under: PHP/Python/C - 09 Nov 2011

首先要明确3des加密的模式,是ecb还是cbc还是其他。

以下是php代码:…

2011 年 8 月 6 日

PHP VC9和VC6以及Thread Safe和Non Thread Safe

Filed under: PHP/Python/C - 06 Aug 2011

注:[5.4+不再支持vc6,只有vc9版本]见:http://news.php.net/php.internals.win/615

一、如何选择PHP的VC9版本和VC6版本
VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本。
VC9版本是使用Visual Studio 2008编译器编译的,如果你的PHP是用IIS来架设的,那你就选择VC9版本。
二、如何选择PHP5.3的Thread Safe和Non Thread Safe版本
Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍。
从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用多进 程的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基 础之上的,而非多线程。一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的PHP 扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因此在IIS下CGI模式才是 PHP运行的最安全方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。
为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个 进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优 势。
先从字面意思上理解,Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。
因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。
再来看PHP的两种执行方式:ISAPI和FastCGI。
ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本;
而FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择Non Thread Safe版本。

Next Page »