这里有新鲜出炉的 PHP 设计模式,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 PHP 云打印类, 结合完整实例形式分析了 php 实现网络打印数据的搜集与队列排序整理及数据打印等功能, 具有一定参考借鉴价值, 需要的朋友可以参考下
本文实例讲述了 PHP 云打印类。分享给大家供大家参考,具体如下:
一个项目需求要几百台电脑都有打印功能,本来是想用网络打印机的,后来发现没有网络打印机,就自己动手写一个打印类算了。
类实现想法是:先把要打印的数据都收集起来,在用 js 调用 window 打印函数。目前就使用于 IE。
类提供打印排队功能。(PS, 说白了就是一条一条读取数据)
- class Wprint {
- //收集打印代码
- private $data = array();
- //处理打印代码
- private $handle;
- public
- function __construct() {
- header("Content-type:text/html;charsetutf-8");
- $this - >link(); //链接数据库
- $this - >collect($_POST["username"], $_POST["content"], $_POST["ip"]);
- $this - >handle();
- }
- //链接数据库
- private
- function link() {
- $link = mysql_connect('localhost', 'root', '123456');
- mysql_select_db('shen', $link);
- mysql_query('SET NAMES utf8');
- }
- //收集打印代码
- private
- function collect($username, $content, $ip) {
- $code["username"] = $username;
- $code["content"] = $this - >check($content);
- $code["ip"] = $ip;
- $code["state"] = 0;
- $code["priority"] = 0;
- array_push($this - >data, $code); //数据节点入栈
- }
- //处理打印代码入库
- private
- function handle() {
- foreach($this - >data as $value) {
- $sql = "insert into print(username,content,ip,state,priority)
- values('{$value["username "]}','{$value["content "]}',
- '{$value["ip "]}','{$value["state "]}','{$value["priority "]}')";
- $query = mysql_query($sql);
- if ($query) {
- $id = mysql_insert_id(); //获取最近insert操作得到的ID
- echo "数据收集成功,正在排队打印,排队ID为".$id;
- $this - >num($id);
- } else {
- echo "数据收集失败,请3秒后再一次提交";
- }
- }
- }
- //检查传人数据是否为空
- private
- function check($string) {
- if (strlen($string) == 0 || $string == " ") {
- echo "数据收集失败,打印内容为空";
- exit;
- } else {
- return $string;
- }
- }
- //获取打印排队人数
- private
- function num($id) {
- $sql = "select id from print where state=0 and id<".$id." order by id asc";
- $query = mysql_query($sql);
- $num = mysql_num_rows($query);
- echo ",您前面还有".$num."个人在排队";
- }
- //打印数据
- public
- function Yprint() {
- $sql = "select id,content from print where state=0 order by id asc limit 1";
- $query = mysql_query($sql);
- $row = mysql_fetch_array($query);
- if (!empty($row["content"])) {
- echo "<script tyle=\"text/javascript\">
- window.print();
- </script>";
- $id = $row["id"];
- $sql = "update print set state=1 where id=".$id;
- mysql_query($sql);
- echo "打印处理完成";
- } else {
- echo $row["content"];
- }
- }
- }
思想很简单,收集数据再一个一个处理。 这样就不仅解决了网络打印的问题,还避免了网络打印打印过程排队的问题。
希望本文所述对大家 PHP 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0804/341963.html