一、寫一個函數(shù),獲取一篇文章內(nèi)容中的全部圖片,并下載
function download_images($article_url = ”, $image_path = ‘tmp’){
// 獲取文章類容
$content = file_get_contents($article_url);
// 利用正則表達式得到圖片鏈接
$reg_tag = ‘//’;
$ret = preg_match_all($reg_tag, $content, $match_result);
$pic_url_array = array_unique($match_result1[1]);
// 創(chuàng)建路徑
$dir = getcwd() . DIRECTORY_SEPARATOR .$image_path;
mkdir(iconv(“UTF-8”, “GBK”, $dir), 0777, true);
foreach($pic_url_array as $pic_url){
// 獲取文件信息
$ch = curl_init($pic_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_NOBODY, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$fileInfo = curl_exec($ch);
$httpinfo = curl_getinfo($ch);
curl_close($ch);
// 獲取圖片文件后綴
$ext = strrchr($pic_url, ‘.’);
$filename = $dir . ‘/’ . uniqid() . $ext;
// 保存圖片信息到文件
$local_file = fopen($filename, ‘w’);
if(false !== $local_file){
if( false !== fwrite($local_file, $filecontent) ){
fclose($local_file);
}
}
}
}
二、什么是 CSRF 攻擊?XSS 攻擊?如何防范?CSRF:跨站請求偽造,可以通過通過判斷來源和加 Token 的方式來防范。
XSS:跨站腳本攻擊,可以通過對內(nèi)容轉(zhuǎn)義和過濾來防范,還有 CSP
三、應用中我們經(jīng)常會遇到在 user 表隨機調(diào)取 10 條數(shù)據(jù)來展示的情況,簡述你如何實現(xiàn)該功能。
SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORD
主鍵:絕對不能有空值。唯一索引:可以有空值
五、http 與 https 的主要區(qū)別
關(guān)鍵是 S 上。簡而言之,https 建立連接后要先把 SSL 的證書發(fā)下去,有了公鑰和私鑰,就可以解密了。
六、兩臺 mysql 服務(wù)器,其中一臺掛了,怎么讓業(yè)務(wù)端無感切換,并保證正常情況下講臺服務(wù)器的數(shù)據(jù)是一致的
不是核心業(yè)務(wù)的話,先停寫,把備機拉起來,查看兩臺機器的日志,進行數(shù)據(jù)補償,開寫。
如果是核心業(yè)務(wù)的話,現(xiàn)在所有的操作都在正常的狀態(tài)機器上。把好的這臺機器的備機拉起來,當主機。
以上全是應急操作。實際上數(shù)據(jù)庫的容災設(shè)計要復雜得多。
面試官要是問你,備機的數(shù)據(jù)不一致怎么辦,你要勇敢懟回去,你們每秒多少寫入操作。按照百萬級表,每秒 1000 的寫入效率,正常的設(shè)計是,分布在 2 臺機器上每臺 500。這個級別的數(shù)據(jù)同步,出現(xiàn)差異的概率 可以忽略不計的。有一臺出現(xiàn)問題,另一臺也可以抗住。
(正常的操作,還是先停寫,等數(shù)據(jù)一致,切換,開寫。我們公司搞這些切換都是在凌晨 4.00 左右,核心業(yè)務(wù)的每秒寫操作,只有十幾個。前后耽擱不到 20 秒)。
七、10 瓶水,其中一瓶有毒,小白鼠喝完有毒的水之后,會在 24 小時后死亡,問:最少用幾只小白鼠可以在 24 小時后找到具體是哪一瓶水有毒。
答案:四只二進制問題。薛定諤的老鼠。
一只老鼠有兩個狀態(tài),死活,對應 01。假設(shè)老鼠的個數(shù)為 A,則有 2^A>=10; A=4;
思路很簡單,十瓶藥編號:0,1,10,11….1001;
0 不喝。第一只老鼠喝所有個位是 1 的:13579,第二只喝十位是 1 的,第三只和百位是 1 的,第四只喝千位是 1 的。
24 小時后,看下死了的是 1,活著的是 0。按老鼠的順序乖乖站好…… 假如第一只和第三只死了,那就是 0101,就是 5 有問題。