ホームページ  >  記事  >  バックエンド開発  >  PHP がクラウド印刷クラスを実装

PHP がクラウド印刷クラスを実装

墨辰丷
墨辰丷オリジナル
2018-06-01 09:11:051770ブラウズ

この記事では、主に PHP クラウド印刷クラスを紹介し、PHP がネットワーク印刷データ収集、キューソート、データ印刷などの機能をどのように実現できるかを完全な例の形式で分析します。これを必要とする友人は参照できます。

プロジェクトの要件では、何百ものコンピューターに印刷機能が必要でした。当初はネットワーク プリンターを使用したいと思っていましたが、後でネットワーク プリンターがないことがわかり、自分で印刷クラスを作成しました。

クラス実装の考え方は、まず印刷するすべてのデータを収集し、次に js を使用してウィンドウ印刷関数を呼び出すことです。現在IEで使用しています。

クラスは、印刷キュー機能を提供します。 (PS、端的に言うと、データを 1 つずつ読み取ることを意味します)

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"];
     }
   }
}

考え方は非常に単純で、データを収集して 1 つずつ処理します。 これにより、ネットワーク印刷の問題が解決されるだけでなく、ネットワーク印刷プロセスでのキューの問題も回避されます。

要約: 上記がこの記事の全内容です。皆様の学習に役立つことを願っています。

関連する推奨事項:

PHP ウメン ニュース プッシュ カテゴリ

PHP 住宅ローンの計算

素数を見つけるための PHP フィルタリング方法

以上がPHP がクラウド印刷クラスを実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。