1. 一、getimgarrfrommysql
    2. <?php
    3. echo ' select mysql get picurl to array start<br>';
    4. $link = mysql_connect('localhost','root',''); //('hostname','dbuser','dbpassword')
    5. if (!$link) {
    6. die('Could not connect to MySQL: ' . mysql_error());
    7. }
    8. echo 'Connection OK<br>';
    9. mysql_select_db("test", $link);
    10. $result = mysql_query("SELECT * FROM to8to_goodcasepic");
    11. $caseArr = array();
    12. $i = 0;
    13. while($row = mysql_fetch_array($result))
    14. {
    15. echo $i . " --> " . $row['picpath'];
    16. echo "<br />";
    17. $caseArr[$i] = $row['picpath'];
    18. $i ++;
    19. }
    20. echo '<br> close mysql <br>';
    21. mysql_close($link);
    22. echo '<br> mysql the end <br>';
    23. echo '<br> writeFile start <br>';
    24. $imgDataArr = '<?php
    25. $picdata =';
    26. $imgDataArr .= var_export($caseArr,true).'; ';
    27. //###测试临时注释
    28. //file_put_contents('ab3.php',$textdata2);
    29. $fileName = "./caseimgarrdata.php";
    30. writeFile($fileName,$imgDataArr,'a');
    31. echo '<br> writeFile the end <br>';
    32. echo '<br> all the end <br>';
    33. /*
    34. **
    35. * 写文件
    36. * @param string $file 文件路径
    37. * @param string $str 写入内容
    38. * @param char $mode 写入模式
    39. */
    40. function writeFile($file,$str,$mode='w'){
    41. $oldmask = @umask(0);
    42. $fp = @fopen($file,$mode);
    43. @flock($fp, 3);
    44. if(!$fp){
    45. Return false;
    46. } else {
    47. @fwrite($fp,$str);
    48. @fclose($fp);
    49. @umask($oldmask);
    50. Return true;
    51. }
    52. }
    53. ///the end ///
    54. 二、getimgarrfromdb
    55. <?php
    56. /**
    57. * 从数据库批量获取图库(效果图)地址,按规则生成webp 图片
    58. *
    59. * @author bfire.lai
    60. * @version 1.0
    61. * @copyright bfire.lai, 2015-01-16
    62. * @package default
    63. */
    64. //实时刷新浏览器缓存
    65. ob_end_clean();
    66. ob_implicit_flush(true);
    67. //网站根目录
    68. if (!defined('ROOT')) {
    69. define('ROOT', dirname(dirname(__FILE__)));
    70. }
    71. //定义图片路径
    72. define('PIC_DOMAIN','http://pic.to8to.com/');
    73. //导入基本配置文件
    74. require_once("../include/start_init.inc.php");
    75. $debug2 = (int)$_GET['_debug'];
    76. if ($debug2) {
    77. ini_set('display_errors',true);
    78. error_reporting(E_ALL);
    79. $db->SetPrintSql(true);
    80. }
    81. //设置响应时间不限制
    82. @set_time_limit(0);
    83. //设置最大缓存块是512M
    84. @ini_set('memory_limit','512M');
    85. echo '<br> all start <br>'.date("Y-m-d H:i:s");
    86. if(1){
    87. //效果图 获取数据写入文件数组
    88. $tables = 'xiaoguotu';
    89. //数遍表
    90. $tablesArr = array(
    91. 0 => 'xiaoguotu', //效果图(图库) filename
    92. 1 => 'owner', //业主头像 id
    93. 2 => 'fcom', //装修公司头像 id
    94. 3 => 'art', //装修公司设计方案 filename
    95. 4 => 'company_zhengshu', //装修公司证书 filename
    96. 5 => 'gongdi_pic', //远程工地 filename
    97. 6 => 'xiaoguotu_topic', //专题 img_for_mobile/img1/img2/img3/img4/img5
    98. //7 => 'knowzxcs', //知识 content
    99. //8 => 'company_zhengshu', //装修公司证书 filename
    100. //9 => 'c'
    101. );
    102. foreach ($tablesArr as $kk => $vv) {
    103. //switch($tables){
    104. $tables = $vv;
    105. switch($tables){
    106. case 'xiaoguotu':
    107. $filename = 'filename as filename';
    108. $where = 'visible=1';
    109. $orderby = 'edittime desc';
    110. $in_rule = 'smallcase';
    111. imgDbToImgWebp($tables, $filename, $where, $orderby, $in_rule);
    112. break;
    113. case 'owner':
    114. $filename = 'id as filename';
    115. $in_rule = 'user';
    116. imgDbToImgWebp($tables, $filename, '', '', $in_rule);
    117. break;
    118. case 'fcom':
    119. $filename = 'id as filename';
    120. $in_rule = 'user';
    121. imgDbToImgWebp($tables, $filename, '', '', $in_rule);
    122. break;
    123. case 'art':
    124. $filename = 'filename as filename';
    125. $orderby = 'edittime desc';
    126. $in_rule = 'case';
    127. imgDbToImgWebp($tables, $filename, '', $orderby, $in_rule);
    128. break;
    129. case 'company_zhengshu':
    130. $filename = 'filename as filename';
    131. $orderby = 'puttime desc';
    132. $in_rule = 'c_zhengshu';
    133. imgDbToImgWebp($tables, $filename, '', $orderby, $in_rule);
    134. break;
    135. case 'gongdi_pic':
    136. $filename = 'filename as filename';
    137. $orderby = 'add_time desc';
    138. $in_rule = 'gongdi_pic';
    139. imgDbToImgWebp($tables, $filename, '', $orderby, $in_rule);
    140. break;
    141. case 'xiaoguotu_topic':
    142. $filename = 'img_for_mobile as filename';
    143. $orderby = 'puttime desc';
    144. $in_rule = 'xiaoguotu_topic';
    145. imgDbToImgWebp($tables, $filename, '', $orderby, $in_rule);
    146. break;
    147. /*
    148. case 'xiaoguotu7':break;
    149. case 'xiaoguotu8':break;
    150. case 'xiaoguotu9':break;
    151. case 'xiaoguotu10':break;
    152. case 'xiaoguotu11':break;
    153. case 'xiaoguotu12':break;
    154. */
    155. default :echo '脚本执行完毕...';break;
    156. }
    157. }
    158. }
    159. echo '<br> all end time <br>'.date("Y-m-d H:i:s");
    160. /**
    161. * @功能:先查数据库 转换成数组 再 转换成 WEBP 格式
    162. * @参数:$tables => 数据表, $filename => 要查的字段, $where=> 条件, $orderby => 排序
    163. * @返回:若转换成功返回true,否则返回false或直接跳出
    164. */
    165. function imgDbToImgWebp($tables, $filename='', $where='', $orderby='',$in_rule=''){
    166. global $db;
    167. if($tables == ''){
    168. return false;
    169. }
    170. $page = 1;
    171. if(!@$perpage) $perpage=3;
    172. while(true){
    173. $limit=($page-1)*$perpage;
    174. $limit="$limit,$perpage";
    175. echo '<br> select xiaoguotu start time : <br>'.date("Y-m-d H:i:s");
    176. //$tables = 'xiaoguotu';
    177. $result=$db->GetRow($tables,$filename,$where,'',$orderby,$limit);
    178. echo '<br> select xiaoguotu end time : <br>'.date("Y-m-d H:i:s");
    179. echo '<br> foreach result start time : <br>'.date("Y-m-d H:i:s");
    180. echo '<pre>';
    181. //print_r($result);exit;
    182. if($result){
    183. //可以操作条件
    184. //echo '<pre>';
    185. //临时图片
    186. $imgDataArr = array();
    187. foreach ($result as $k => $v) {
    188. //echo $k . " --> " . $v['filename'];
    189. //echo "<br />";
    190. switch($in_rule){
    191. case 'case':
    192. $imgDataArr[$k] = $in_rule.'/'.$v['filename'];
    193. break;
    194. case 'smallcase':
    195. $imgDataArr[$k] = $in_rule.'/'.$v['filename'];
    196. break;
    197. case 'user':
    198. //$file='/pic/user/'.($uid%100)."/headphoto_$uid$FLAG.jpg";
    199. $uid = intval($v['filename']);
    200. $imgDataArr[$k] = $in_rule.'/'.($uid%100)."/headphoto_$uid.jpg";
    201. break;
    202. case 'c_zhengshu':
    203. $imgDataArr[$k] = $in_rule.'/'.$v['filename'];
    204. break;
    205. case 'gongdi_pic':
    206. $imgDataArr[$k] = $in_rule.'/'.$v['filename'];
    207. break;
    208. case 'xiaoguotu_topic':
    209. $imgDataArr[$k] = $in_rule.'/'.$v['filename'];
    210. break;
    211. /*
    212. case 'xiaoguotu5':break;
    213. case 'xiaoguotu6':break;
    214. case 'xiaoguotu7':break;
    215. case 'xiaoguotu8':break;
    216. case 'xiaoguotu9':break;
    217. */
    218. default :
    219. $imgDataArr[$k] = $in_rule.'/'.$v['filename'];
    220. break;
    221. }
    222. }
    223. //图片转换
    224. echo '<br> imgDataArrToWebp start time <br>'.date("Y-m-d H:i:s");
    225. imgDataArrToWebp($imgDataArr);
    226. echo '<br> imgDataArrToWebp end time <br>'.date("Y-m-d H:i:s");
    227. }else{
    228. //结束条件
    229. echo '<br> 没有结果呢... <br>'.date("Y-m-d H:i:s");
    230. break;
    231. }
    232. if($page == 3){
    233. //结束条件
    234. echo '<br> 有数据哟 不过已经结束了... <br>'.date("Y-m-d H:i:s");
    235. break;
    236. }
    237. $page ++;
    238. }
    239. echo '<br> foreach result time <br>'.date("Y-m-d H:i:s");
    240. return true;
    241. }
    242. /**
    243. * @功能:数组中的图片按规则转换成 WEBP 格式
    244. * @参数:$picdata => 源图片数组,
    245. * @返回:若转换成功返回true,否则返回false或直接跳出
    246. */
    247. function imgDataArrToWebp($picdata){
    248. //图片规则
    249. $images_rule = array(
    250. 'smallcase'=>array('r','s','t',254,508,284,480),
    251. 'case'=>array('s','c','831',480,'592x344M','140x140M'),
    252. 'home'=>array('s','r','280x280M'),
    253. 'huodong'=>array('c',730),
    254. 'attch'=>array('s','r','140x140M','80x80M','600',480,'180x180M','560x315M','640x360M','640x580M','600x338M'),
    255. 'user'=>array(120,130,60),
    256. 'renmai'=>array(600,440,80,'p'),
    257. 'vr'=>array(223),
    258. 'gongdi_pic'=>array(80,160,240,'230x230M'),
    259. 'ask'=>array('s'),
    260. 'mall'=>array('m',280,180,80,50,480),
    261. 'photo'=>array('s'),
    262. 'news_center'=>array('s'),
    263. 'xiaoguotu_topic'=>array(480,284,588),
    264. 'live'=>array('600',480,'180x180M','560x315M','640x360M','140x140M','80x80M','640x580M','600x338M'),
    265. 'c_zhengshu'=>array(180),
    266. );
    267. echo '<pre>';
    268. //print_r($picdata);exit;
    269. if(!is_array($picdata)){
    270. return false;
    271. }
    272. $imgiconnum = $imgiconsum = 0;
    273. $t = 0;
    274. echo '<br> foreach picdata start <br>'.date("Y-m-d H:i:s");
    275. foreach ($picdata as $k2 => $v2) {
    276. //echo $k2;
    277. //echo '<br>';
    278. $imgiconsum ++;
    279. $to_path = pathinfo($v2);
    280. $in_rule = explode('/',$to_path['dirname']);
    281. /*
    282. [dirname] => case/1501/15
    283. [basename] => 20150115_84991cead0e29c29a14dr5a7kn6bu7qn.jpg
    284. [extension] => jpg
    285. [filename] => 20150115_84991cead0e29c29a14dr5a7kn6bu7qn
    286. */
    287. //print_r($to_path);
    288. if($images_rule[$in_rule[0]]){
    289. echo '<br> 正在图片转换.... <br>'.date("Y-m-d H:i:s");
    290. //原图转换
    291. $srcurl = PIC_DOMAIN.$to_path['dirname'].'/'.$to_path['basename'].'.webp';
    292. askimgtohtml($srcurl);
    293. //缩略图转换
    294. foreach ($images_rule[$in_rule[0]] as $k3 => $v3) {
    295. // echo '<br>';
    296. $url = PIC_DOMAIN.$to_path['dirname'].'/'.$to_path['filename'].'_'.$v3.'.'.$to_path['extension'].'.webp';
    297. // echo $url;
    298. askimgtohtml($url);
    299. // echo '<br>';
    300. }
    301. }else{
    302. echo '<br> 不做图片转换工作 <br>'.date("Y-m-d H:i:s");
    303. }
    304. echo '<br> the '.($k2+1).' end <br>'.date("Y-m-d H:i:s");
    305. }
    306. echo '<br> foreach picdata end <br>';
    307. echo '<br>---sur- result : $imgiconnum '.$imgiconnum.'+++++ $imgiconsum '.$imgiconsum.'-----<br>';
    308. return true;
    309. }
    310. /*
    311. **
    312. * 访问URL 生成WEBP
    313. * @param string $url 图片URL
    314. */
    315. function askimgtohtml($url){
    316. $cmd=$retext=$args=$str = '';
    317. //判断所在系统
    318. $isSystem = stripos(PHP_OS,"WIN")>-1;
    319. if ($isSystem) {
    320. $cmd = "wget -O c:/null $url ";
    321. }else{
    322. $cmd = "wget -O /dev/null $url";
    323. //$retext = implode(",",$return);
    324. //$linenum = __LINE__;
    325. //操作日志
    326. //rewritetolog('#html+'.$linenum.'#', $cmd, $retext, $args);
    327. }
    328. //$str = exec($cmd,$return,$args);
    329. //echo '<br> 输出 cmd '.date("Y-m-d H:i:s").'--->';
    330. echo $cmd;
    331. //控制访问时间
    332. sleep(0.2);
    333. }
    334. /*
    335. **
    336. * 写文件
    337. * @param string $file 文件路径
    338. * @param string $str 写入内容
    339. * @param char $mode 写入模式
    340. */
    341. function writeFile($file,$str,$mode='w'){
    342. $oldmask = @umask(0);
    343. $fp = @fopen($file,$mode);
    344. @flock($fp, 3);
    345. if(!$fp){
    346. Return false;
    347. } else {
    348. @fwrite($fp,$str);
    349. @fclose($fp);
    350. @umask($oldmask);
    351. Return true;
    352. }
    353. }
    354. /**
    355. * @功能:日志记录
    356. * @参数:$intype => 要记录日志的类型,
    357. * $cmd => 执行的LINUX命令,
    358. * $return => 返回结果集,
    359. * $args => 返回结果状态,0表示成功,非0表示失败
    360. * $logger => 是否要记录日志
    361. * @返回:若转换成功返回true,否则返回false或直接跳出
    362. * 显示行号 __LINE__
    363. */
    364. function rewritetolog($intype='', $cmd='', $return='', $args='', $logger =true) {
    365. if($logger){
    366. $log = '#Suc#';
    367. if($args){
    368. $log = '#Err#';
    369. }
    370. $log = $log.$intype.':'.date("Y-m-d H:i:s").":#cmd#".$cmd."#return#".$return."#args#".$args."<br>\n";
    371. $fileName = "../syslog/imglogs/".date('Y-m-d').".log";
    372. writeFile($fileName,$log,'a');
    373. }
    374. }
    375. 三、getimgdatafromhtml
    376. <?php
    377. echo '<br> getimgdatafromhtml start <br>';
    378. echo date('h:i:s') . "<br />";
    379. //暂停 10 秒
    380. sleep(2);
    381. //重新开始
    382. echo date('h:i:s');
    383. echo '<pre>';
    384. echo '<br> require imgfile start <br>';
    385. //#读出的方法
    386. require("caseimgarrdata.php");
    387. //print_r($picdata);
    388. echo '<br> require imgfile end <br>';
    389. $imgiconnum = $imgiconsum = 0;
    390. $t = 0;
    391. echo '<br> foreach picdata start <br>';
    392. foreach ($picdata as $k2 => $v2) {
    393. echo $k2;
    394. $imgiconsum ++;
    395. $to_path = pathinfo($v2);
    396. //print_r($to_path);
    397. //makeDir( $to_path['dirname'] );
    398. $url = 'http://pic.to8to.com/'.$v2;
    399. //$url = 'http://img.to8to.com/'.$v2;
    400. //echo $url;
    401. //echo '<br>';
    402. sleep(2);
    403. $res = getImage($url,$to_path['dirname'],$to_path['basename']);
    404. //print_r($res);
    405. if($res['error']=='0'){
    406. $imgiconnum ++;
    407. }
    408. }
    409. echo '<br> foreach picdata end <br>';
    410. echo '<br>---sur- result : $imgiconnum '.$imgiconnum.'+++++ $imgiconsum '.$imgiconsum.'-----<br>';
    411. echo '<br> all end <br>';
    412. exit;
    413. /**
    414. * @功能:创建目录
    415. * @参数:$path => 要创建的目录, $mod => 指定权限
    416. * @返回:若创建成功返回true,否则返回false或直接跳出
    417. */
    418. function makeDir($path, $mod = 0777) {
    419. if (stripos(PHP_OS, 'win') === false) {
    420. $cmd = 'mkdir -p '.$path;
    421. } else {
    422. $path = str_replace('/', '\\', $path);
    423. $cmd = 'mkdir '.$path;
    424. }
    425. exec($cmd);
    426. return true;
    427. }
    428. /*
    429. 02
    430. *功能:php完美实现下载远程图片保存到本地
    431. 03
    432. *参数:文件url,保存文件目录,保存文件名称,使用的下载方式
    433. 04
    434. *当保存文件名称为空时则使用远程文件原来的名称
    435. 05
    436. */
    437. function getImage($url,$save_dir='',$filename='',$type=0){
    438. if(trim($url)==''){
    439. return array('file_name'=>'','save_path'=>'','error'=>1);
    440. }
    441. if(trim($save_dir)==''){
    442. $save_dir='./';
    443. }
    444. if(trim($filename)==''){//保存文件名
    445. $ext=strrchr($url,'.');
    446. if($ext!='.gif'&&$ext!='.jpg'&&$ext!='.png'){
    447. return array('file_name'=>'','save_path'=>'','error'=>3);
    448. }
    449. $filename=time().$ext;
    450. }
    451. if(0!==strrpos($save_dir,'/')){
    452. $save_dir.='/';
    453. }
    454. //创建保存目录
    455. if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){
    456. return array('file_name'=>'','save_path'=>'','error'=>5);
    457. }
    458. //获取远程文件所采用的方法
    459. if($type){
    460. $ch=curl_init();
    461. $timeout=5;
    462. curl_setopt($ch,CURLOPT_URL,$url);
    463. curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    464. curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    465. $img=curl_exec($ch);
    466. curl_close($ch);
    467. }else{
    468. ob_start();
    469. readfile($url);
    470. $img=ob_get_contents();
    471. ob_end_clean();
    472. }
    473. //$size=strlen($img);
    474. //文件大小
    475. $fp2=@fopen($save_dir.$filename,'a');
    476. fwrite($fp2,$img);
    477. fclose($fp2);
    478. unset($img,$url);
    479. return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0);
    480. }