無網絡打印機環境下,將打印任務寫入數據庫隊列,前端頁面輪詢調用 window.print() 實現打印。
class Wprint {
private $data = array();
private $handle;
public function __construct() {
$this->link(); // 連接數據庫
$this->collect($_POST["username"], $_POST["content"], $_POST["ip"]);
$this->handle(); // 入隊並顯示排隊信息
}
private function collect($username, $content, $ip) {
$code = array(
"username" => $username,
"content" => $this->check($content),
"ip" => $ip,
"state" => 0, // 0待打印 1已打印
"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"]}')";
if (mysql_query($sql)) {
$id = mysql_insert_id();
echo "數據收集成功,排隊ID:$id";
$this->num($id); // 顯示前方排隊人數
}
}
}
public function Yprint() { // 打印執行頁面調用
$sql = "SELECT id,content FROM print WHERE state=0 ORDER BY id ASC LIMIT 1";
$row = mysql_fetch_array(mysql_query($sql));
if ($row["content"]) {
echo "<script>window.print();</script>";
mysql_query("UPDATE print SET state=1 WHERE id={$row['id']}");
echo "打印完成";
}
}
}
Yprint()解決了無網絡打印機環境下的排隊打印問題。