当前位置: 编程技术>php
本页文章导读:
▪php生成带logo 二维码图像的代码分享 在php中,生成二维码图片,可以借助QRcode类实现。
有关QRcode类的内容,请参考文章:php生成二维码图像的类QRcode
以下介绍在二维码QR图中加LOGO的实现方法,主要分为以下几个步骤:
步骤1,.........
▪php实现文件下载的方法分享 对于普通文件的下载,直接在html中创建下载链接即可,比如:<A href=http://www./ xxx.tar>下载文件</a>。
但在php编程中,对于需要隐藏下载文件地址及其它特殊需求时,则要编写代码来实.........
▪php多线程类的代码分享 如何通过WEB服务器实现PHP的多线程功能呢?
在php编程中,通过WEB服务器实现的多线程只能模仿多线程的一些效果,并不是真正意义上的多线程。
在需要类似多线程的功能时,可以参考下下面.........
[1]php生成带logo 二维码图像的代码分享
来源: 互联网 发布时间: 2013-12-24
在php中,生成二维码图片,可以借助QRcode类实现。
有关QRcode类的内容,请参考文章:php生成二维码图像的类QRcode
以下介绍在二维码QR图中加LOGO的实现方法,主要分为以下几个步骤:
步骤1,生成QR原图;
步骤2,以加水印的方式加上LOGO图片,即可生成个性化的二维码。
<?php
/**
* 二维码图片 添加logo
* edit by www.
*/
$data = 'http://www.';
$size = '200x200';
$logo = './logo.jpg'; // 中间那logo图
// 通过google api生成未加logo前的QR图,也可以自己使用RQcode类生成
$png = 'http://chart.googleapis.com/chart?chs=' . $size . '&cht=qr&chl=' . urlencode($data) . '&chld=L|1&choe=UTF-8';
$QR = imagecreatefrompng($png);
if($logo !== FALSE)
{
$logo = imagecreatefromstring(file_get_contents($logo));
$QR_width = imagesx($QR);
$QR_height = imagesy($QR);
$logo_width = imagesx($logo);
$logo_height = imagesy($logo);
$logo_qr_width = $QR_width / 5;
$scale = $logo_width / $logo_qr_width;
$logo_qr_height = $logo_height / $scale;
$from_width = ($QR_width - $logo_qr_width) / 2;
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
}
header('Content-type: image/png');
imagepng($QR);
imagedestroy($QR);
?>
[2]php实现文件下载的方法分享
来源: 互联网 发布时间: 2013-12-24
对于普通文件的下载,直接在html中创建下载链接即可,比如:<A href=http://www./ xxx.tar>下载文件</a>。
但在php编程中,对于需要隐藏下载文件地址及其它特殊需求时,则要编写代码来实现了。
这里分享一个php文件下载的函数,分段读取文件,然后传送给客户端。
代码如下:
<?php
/**
* @功能:文件下载
* @编辑:www.
*/
functiondownload($file_dir,$file_name)
//参数说明:
//file_dir:文件所在目录
//file_name:文件名
{
$file_dir=chop($file_dir);//去掉路径中多余的空格
//得出要下载的文件的路径
if($file_dir!=)
{
$file_path=$file_dir;
if(substr($file_dir,strlen($file_dir)-1,strlen($file_dir))!=/)
$file_path.=/;
$file_path.=$file_name;
}
else
$file_path=$file_name;
//判断要下载的文件是否存在
if(!file_exists($file_path))
{
echo对不起,你要下载的文件不存在。;
returnfalse;
}
$file_size=filesize($file_path);
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Accept-Length:$file_size");
header("Content-Disposition:attachment;filename=".$file_name);
$fp=fopen($file_path,"r");
$buffer_size=1024;
$cur_pos=0;
while(!feof($fp)&&$file_size-$cur_pos>$buffer_size)
{
$buffer=fread($fp,$buffer_size);
echo$buffer;
$cur_pos+=$buffer_size;
}
$buffer=fread($fp,$file_size-$cur_pos);
echo$buffer;
fclose($fp);
returntrue;
}
?>
[3]php多线程类的代码分享
来源: 互联网 发布时间: 2013-12-24
如何通过WEB服务器实现PHP的多线程功能呢?
在php编程中,通过WEB服务器实现的多线程只能模仿多线程的一些效果,并不是真正意义上的多线程。
在需要类似多线程的功能时,可以参考下下面的这个类。
代码:
<?php
/**
* @title: PHP多线程类(Thread)
* @version: 1.0
* @edit by www.
* @published: 2013/7/18
*
* PHP多线程应用示例:
* require_once 'thread.class.php';
* $thread = new thread();
* $thread->addthread('action_log','a');
* $thread->addthread('action_log','b');
* $thread->addthread('action_log','c');
* $thread->runthread();
*
* function action_log($info) {
* $log = 'log/' . microtime() . '.log';
* $txt = $info . "\r\n\r\n" . 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "\r\n";
* $fp = fopen($log, 'w');
* fwrite($fp, $txt);
* fclose($fp);
* }
*/
class thread {
var $hooks = array();
var $args = array();
function thread() {
}
function addthread($func)
{
$args = array_slice(func_get_args(), 1);
$this->hooks[] = $func;
$this->args[] = $args;
return true;
}
function runthread()
{
if(isset($_GET['flag']))
{
$flag = intval($_GET['flag']);
}
if($flag || $flag === 0)
{
call_user_func_array($this->hooks[$flag], $this->args[$flag]);
}
else
{
for($i = 0, $size = count($this->hooks); $i < $size; $i++)
{
$fp=fsockopen($_SERVER['HTTP_HOST'],$_SERVER['SERVER_PORT']);
if($fp)
{
$out = "GET {$_SERVER['PHP_SELF']}?flag=$i HTTP/1.1\r\n";
$out .= "Host: {$_SERVER['HTTP_HOST']}\r\n";
$out .= "Connection: Close\r\n\r\n";
fputs($fp,$out);
fclose($fp);
}
}
}
}
}
?>
调用示例:
<?php
//多线程调用示例
$thread = new thread();
$thread->addthread('func1','info1');
$thread->addthread('func2','info2');
$thread->addthread('func3','info3');
$thread->runthread();
?>
说明:
addthread是添加线程函数,第一个参数是函数名,之后的参数(可选)为传递给指定函数的参数。
runthread是执行线程的函数。
附,下载地址:php多线程类的源码。
最新技术文章: