当前位置:  编程技术>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多线程类的源码。


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3