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  

  

---------------------------------------------/爬虫相关的问题---------------------------------------------------

 

posted @ 2018-07-30 15:43  zhanghui_ming  阅读(194)  评论(0编辑  收藏  举报