1. 前言
工作上采用一些小技巧,对排查、操作等都可以节省很多时间。下面就是根据自己在日常工作中有使用到的好程序。
2. 打印日志
/**
* 输出日志
* @param $content
* @param string $file
*/
public function writeLog($content, $file = 'debug') {
$row = debug_backtrace();
if (is_array($content)) {
$content = json_encode($content, JSON_UNESCAPED_UNICODE);
} elseif (is_object($content)) {
$content = json_encode($content->toArray(), JSON_UNESCAPED_UNICODE);
}
$content = date('Y-m-d H:i:s'). ' ' . $row[0]['file'] . ':' . $row[0]['line'] . '行' . " " . $content ."\n";
$file = WWW_ROOT . '/logs/' . $file . "_" . date('Ymd') . ".log";
file_put_contents($file, $content,FILE_APPEND);
}
将上面方法放到你项目中去调用,输出的日志有详细的时间和打印的位置,方便排查bug或记录日志使用
3. 根据文件生成sql
此方法是个人使用的,经常会来一些根据文档更改数据的任务,手动wps添加,在数量多的时候非常不方便,
所以就写了个php脚本执行,脚本引入PHPExcel实现。
点击下载PHPExcel,并把下面代码放到根目录就行
或者直接下载我压缩好的包:https://pan.baidu.com/s/1I1sSNs8xdf1RycwOuYxQgQ 提取码:1234
将文件放在php环境下,进入根目录,执行php sql.php,就可生成data.sql,需要其它执行的自己在sql.php更改就行
<?php
set_time_limit(60);
ini_set("memory_limit", "128M");
// 引入PHPExcel文件
require './Classes/PHPExcel.php';
$start = microtime(true);
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;
$cacheSettings = array();
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
// 加载excel文件
$excel = PHPExcel_IOFactory::load('./test.xls');
$curSheet = $excel->getActiveSheet();
// sql文件保存路径
$sqlFile = dirname(__FILE__) . '/data.sql';
$fp = fopen($sqlFile, 'ab+');
// 获取当前工作表最大行数
$rows = $curSheet->getHighestRow();
// $cols = $curSheet->getHighestColumn();
// 我只需要前面一列
$cols = 'A';
// 将列名转为列数
$cols = PHPExcel_Cell::columnIndexFromString($cols);
for ($i = 1; $i <= $rows; ++$i) {
$rowStr = "UPDATE device SET model = 'K1-2110' WHERE code = ";
for ($j = 0; $j < $cols; ++$j) {
//将列数转换为列名
$cellName = PHPExcel_Cell::stringFromColumnIndex($j) . $i;
$cellValue = $curSheet->getCell($cellName)->getValue();
$cellValue = trim(iconv('GBK', 'UTF-8', $cellValue));
$cellValue && $rowStr .= "'{$cellValue}',";
if ($cellValue) {
$rowStr = rtrim($rowStr, ",") . ";\r\n";
fwrite($fp, $rowStr);
}
}
}
fclose($fp);
$end = microtime(true);
echo $end - $start;