php 的一些問題

------------------------------------------------------------------------------
* 絕對路徑轉化爲相對路徑
<?php
/**
 * $path相對於$base的相對路徑
 * @param string $base
 * @param string $path
 */
function abs2rel(string $base, string $path) {
    if (is_dir($base)) {
        $base = rtrim($base, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . ".";
    }

    $a = explode(DIRECTORY_SEPARATOR, $base);
    $b = explode(DIRECTORY_SEPARATOR, $path);
 
    $d = [];   // $path push
    $i = count($a)-1;
 
    $sliceEquals = function($a, $b, $j) {
        if ($j >= count($a) || $j >= count($b)) {
            throw new Exception('$j out of range');
        }
        for ($i = $j; $i >= 0; $i--) {
            if (strcmp($b[$i], $a[$i])!==0) {
                return false;
            }
        }
        return true;
    };
    // 找到a,b數組元素相同的下標
    while (array_pop($a)) {
        $i = count($a)-1;
        if (isset($b[$i])) {
            if ($sliceEquals($a, $b, $i)) {
                break;
            }
        }
        array_push($d, "..");
    }
    // 從首個不同元素開始
    for ($i+=1; $i < count($b); $i++) {
        array_push($d, $b[$i]);
    }
    return ".".DIRECTORY_SEPARATOR.implode(DIRECTORY_SEPARATOR, $d);
}

  


* 聯合索引哪些有效
* 鏈表逆順序 包含頭節點
* 數組合並哪幾種方式 
------------------------------------------------------------------------------

1. 負載均衡    [TO BE DONE]

    https://blog.csdn.net/qq_28602957/article/details/61615876

 

2. 索引的建立 和查詢 以及索引場景建立

 

3. thinkphp的路由    [ONGOING]

   https://www.kancloud.cn/manual/thinkphp5/118030

   ./application/route.php

 

4.PHP中一些常用的spl函數   [TO BE DONE]

   http://php.net/manual/en/book.spl.php

 

5.mysql的主從分離 對id進行hash 理解hash

6.linux的一些常用命令 熟悉linux  [DONE]

7. 遞歸 n!   [DONE]

 

8. php單例模式

 

9. mysql 分表

 

10. CAS認證, ucenter認證

  

 

---------------------------------------------爬蟲相關的問題---------------------------------------------------

* php程序發送http請求

- curl

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL => 'https://www.baidu.com',
    CURLOPT_HEADER => 1,
    CURLOPT_RETURNTRANSFER => 1
]);

$data = curl_exec($ch);
curl_close($ch);

echo $data.PHP_EOL;

-socket

 


* mysql存儲引擎 myisam / innodb  select count(*) ... 用哪個存儲引擎快

  MyISAM會保存表的總行數,select count(*)在MyISAM存儲引擎中執行,MyISAM只要簡單地讀出保存好的行數即可。

  InnoDB存儲引擎不會保存表的具體行數,因此,在InnoDB存儲引擎中執行這段代碼,InnoDB要掃描一遍整個表來計算有多少行。

 

* mysql 函數pconnect/connect

  mysql_pconnect — Open a persistent connection to a MySQL server


* linux shell 定時器 腳本

  crontab


* 投票限制 每人每分鐘3次,每人每小時10次; 每個IP每分鐘30次,每天100次


* 爬蟲架構


* php實現一個跨請求的隊列 (redis?)


* 上傳文件安全限制

 

* "Hello world Blog Control" 字符串按空格分隔,分成數組,全部轉化爲小寫,按字母順序排

  (php sort 和javascript的sort方法不同 不傳回調用SORT_STRING )

<?php
class TestArrayObject {
  private $s = "";
   
  public function __construct($s) {
    $this->s = $s;
  }
   
  public function run() {
     
    $ao = new ArrayObject(array_map(function($word) {
      return strtolower($word);
    }, explode(' ', $this->s)));
     
    $ao->uasort(function($a, $b) {
      return strcmp($a, $b);
    });
 
    return $ao->getArrayCopy();
  }
   
}
 
$o = new TestArrayObject("Hello world Blog Controll Hola Hi Shalom");
$a = $o->run();
var_dump($a);
TestArrayObject.php  

  

---------------------------------------------/爬蟲相關的問題---------------------------------------------------

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章