php : 開發記錄(2017-03-10)

0.後臺 循環N*10000次操做的簡單處理javascript

後臺須要循環作N*10000次級別的工做時候,好比,發送郵件,推送通知。能夠先把全部數據導入數據表(數據庫操做所需的時間1~2秒),而後前臺循環發送請求,每一個請求,能夠執行一次或屢次操做,好比一次請求發10封郵件,10個通知等(這些控制,根據需求來定),這樣,就能夠把任務作成一種相似進度條的效果,而且能夠直接展現給用戶看,提升用戶體驗。php

 

1.empty(trim($ch_url) :報錯css

手冊:html

在 PHP 5.5 以前,empty() 僅支持變量;任何其餘東西將會致使一個解析錯誤。換言之,下列代碼不會生效: empty(trim($name))。 做爲替代,應該使用trim($name) == false.java

2.手機信息提示框(你懂的,複製,粘貼)jquery

<script type='text/javascript' src='resource/js/lib/jquery-1.11.1.min.js'></script>
<style type='text/css'>
	#poptip { position: fixed; top:40%;left:50%;width:160px;margin-left:-80px;height: 27px;background:#000; opacity: 0.7;filter:alpha(opacity=0.7); color:#fff;z-index: 999;  border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;}
	#poptip_content { position: fixed; top:40%;left:50%;width:160px;margin-left:-80px; height: 27px; color:#fff;text-align:center;font-size:14px;z-index: 999999}
</style>
<script language='javascript'>
function tip(msg,autoClose){
	var div = $("#poptip");
	var content =$("#poptip_content");
	if(div.length<=0){
		div = $("<div id='poptip'></div>").appendTo(document.body);
		content =$("<div id='poptip_content'>" + msg + "</div>").appendTo(document.body);
	}else{
		content.html(msg);
		content.show(); div.show();
	}
	if(autoClose) {
		setTimeout(function(){
			content.fadeOut(500);
			div.fadeOut(500);
		},1000);
	}
}
function tip_close(){
	$("#poptip").fadeOut(500);
	$("#poptip_content").fadeOut(500);
}
</script>

達到如下效果:web

  

3.使用PHP QR Code生成二維碼ajax

phpQrCode 官網:http://phpqrcode.sourceforge.net/ 數據庫

使用:引入phpqrcode.phpapp

封裝的代碼:

/**
* 創建文件夾
*
* @param string $aimUrl
* @return viod
*/
function createDir($aimUrl) {
    $aimUrl = str_replace('', '/', $aimUrl);
    $aimDir = '';
    $arr = explode('/', $aimUrl);
    $result = true;
    foreach ($arr as $str) {
        $aimDir .= $str . '/';
        if (!file_exists($aimDir)) {
            $result = mkdir($aimDir,0777,true);
        }
    }
    return $result;
}

/* --------------------------------------------------------------------
* 建立二維碼
* @param content 二維碼內容
* @param logoPath 圖片文件,或者url
* @param fileName 生成的文件名
* @param errorCorrectionLevel 容錯級別 :L、M、Q、H
*/
function create_qrcode($content, $logoPath = FALSE, $fileName = FALSE, $errorCorrectionLevel = 'M'){

    $errorCorrectionLevels = array('L', 'M', 'Q', 'H');
    $errorCorrectionLevel = in_array($errorCorrectionLevel, $errorCorrectionLevels) ? $errorCorrectionLevel : "M";

    $matrixPointSize = 6; // 點的大小:1到10

    if($logoPath == FALSE || empty($logoPath)){

        //生成二維碼圖片
        QRcode::png($content, false, $errorCorrectionLevel, $matrixPointSize, 2);
    }
    else{

        $path = ATTACHMENT_ROOT . 'temp/qrcode/' . date('Ymd', time());
        $fileName = $path . '/' . $fileName;
        createDir($path);

        $QR = $fileName;

        QRcode::png($content, $QR, $errorCorrectionLevel, $matrixPointSize, 2);

        $QR = imagecreatefromstring(file_get_contents($QR));

        $logo = imagecreatefromstring(file_get_contents($logoPath));

        $QR_width = imagesx($QR); // 二維碼圖片寬度

        $QR_height = imagesy($QR); //二維碼圖片高度

        $logo_width = imagesx($logo); //logo圖片寬度

        $logo_height = imagesy($logo);  //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");
        // header("Content-type:image/png");
        // header("Content-Disposition:attachment; filename=meimei.png");
        ImagePng($QR);
}

4.導出 Excel

關鍵性代碼是:使用 header 便可導出數據

Tip : 這種方式採用 ajax 就不合適了,最好就是一個連接。

header("Content-type:text/csv");
header("Content-Disposition:attachment; filename=" .  date('Y-m-d', time()) . "-代金券覈銷數據.csv");

剩下的工做,就是拼接字符串了。

例子:

<?php
$html = "\xEF\xBB\xBF";
$filter = array(
			'uid' => 'ID',
			'realname' => '姓名',
			'carno' => '車牌號碼',
			'title' => '標題',
			'discount' => '面額',
			/* ... 等等 */
		);
foreach ($filter as $title) {
	$html .= $title . "\t,";
}
$html .= "\n";
foreach ($exports as $k => $v) { // exports 爲全部須要導出的數據

	foreach ($filter as $key => $title) {

		if ($key == 'uid') {
			$html .= $v['uid'] . "\t, ";
		}
		elseif ($key == 'realname') {
			$html .= $v['realname']. "\t, ";
		}
		elseif ($key == 'carno') {
			$html .= $v['carno']. "\t, ";
		}
		elseif ($key == 'title') {
			$html .= $v['title']. "\t, ";
		}
		elseif ($key == 'discount') {
			$html .= $v['discount']. "\t, ";
		}
	}

	$html .= "\n";
}

header("Content-type:text/csv");
header("Content-Disposition:attachment; filename=" .  date('Y-m-d', time()) . "-代金券覈銷數據.csv");
echo $html;
exit();
相關文章
相關標籤/搜索