php學習總結

1、php格式化json的函數,json_encode($value, $options);php

2個比較經常使用的參數:css

一、JSON_UNESCAPED_UNICODE(中文不轉爲unicode,對應的數字256)html

$array = ['a'=>'牀前明月光/', 'b'=>'疑是地上霜', 'c'=>'舉頭望明月', 'd'=>'低頭思故鄉'];
$arrayJson = json_encode($array, JSON_UNESCAPED_UNICODE);
var_dump($arrayJson);
// 結果 string(91) "{"a":"牀前明月光\/","b":"疑是地上霜","c":"舉頭望明月","d":"低頭思故鄉"}"

二、JSON_UNESCAPED_SLASHES(不轉義反斜槓,對應的數字64)mysql

$array = ['a'=>'牀前明月光/', 'b'=>'疑是地上霜', 'c'=>'舉頭望明月', 'd'=>'低頭思故鄉'];
$arrayJson = json_encode($array, JSON_UNESCAPED_SLASHES);
var_dump($arrayJson);
// 結果 string(150) "{"a":"\u5e8a\u524d\u660e\u6708\u5149/","b":"\u7591\u662f\u5730\u4e0a\u971c","c":"\u4e3e\u5934\u671b\u660e\u6708","d":"\u4f4e\u5934\u601d\u6545\u4e61"}"

2個參數同時使用:linux

JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320git

使用方法:json_encode($array, 320);web

$array = ['a'=>'牀前明月光/', 'b'=>'疑是地上霜', 'c'=>'舉頭望明月', 'd'=>'低頭思故鄉'];
$arrayJson = json_encode($array, 320);
var_dump($arrayJson);
// 結果 string(90) "{"a":"牀前明月光/","b":"疑是地上霜","c":"舉頭望明月","d":"低頭思故鄉"}"

 

2、php資源路徑處理ajax

1.[http|https]+host+port 從當前url讀取,不要硬編碼
2.儲存資源路徑用相對地址uri,對外接口返回資源絕對url【$_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'] . $row['photo']】其中$_SERVER['HTTP_HOST'] = $_SERVER['SERVER_NAME']+$_SERVER['PORT']redis

 

3、xml字符破影響vim編輯器對php syntax問題
算法

$xml    = "<?xml version=\"1.0\" encoding=\"{$encoding}\"?>";
解決辦法:
$xml = '<?xml version="1.0" encoding="{$encoding}"?'.'>';

 

4、php獲取sql執行錯誤信息

echo mysql_errno($link) . ": " . mysql_error($link) . "\n";

 

 5、linux 軟硬連接的區別和應用場景

 

硬連接等於cp -p加同步更新。
軟連接像快捷方式,方便咱們打開源文件,這一點在windows中深有體會,那硬連接有哪些應用呢?
在多用戶的操做系統裏,你寫一個腳本,程序等,沒有完成,保存後等下次有時間繼續寫,可是其餘用戶有可能將你未寫完的東西當成垃圾清理掉,這時,你對你的程序,腳本等作一個硬連接,利用硬連接的同步更新,就能夠方式,別人誤刪你的源文件了
詳情閱讀:https://blog.csdn.net/gao_zhennan/article/details/79127232

 

 

6、shell編程知識

kill -TERM `cat /usr/local/apache2/logs/httpd.pid` 
elasticsearchID=$(ps aux|grep elasticsearch|grep -v "grep"|awk '{print $2}') echo "elasticsearch的pid爲$elasticsearchID"
if [[ $elasticsearchID ]]

# 這裏判斷elasticsearch進程是否存在
    then
    echo "elasticsearch正常狀態"
else
    echo "elasticsearchID沒有啓動"
    systemctl restart elasticsearch
fi

 

7、php5.6.30編譯安裝參數

./configure --prefix=/usr/local/php  --with-apxs2=/usr/bin/apxs --with-config-file-scan-dir=/etc/php.d  --with-config-file-path=/etc  --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --enable-rpath  --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --with-mcrypt --enable-ftp --with-gd --enable-gd-native-ttf --with-openssl  --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --with-tidy --enable-zip --enable-soap --with-gettext --with-xsl --with-pear --enable-opcache --enable-fileinfo --enable-wddx  --enable-static --enable-sysvshm --enable-sysvmsg --enable-shared --enable-apc --enable-apc-mmap --enable-apu

特別說明的幾點:

一、--with-pear            //安裝pear,方便往後安全須要加裝的擴展,peal安裝擴展,詳細閱讀:https://www.php.net/manual/zh/install.pecl.php

二、--enable-maintainer-zts             //線程安全,該參數設置php線程安裝,有時候是不須要的,nts

三、--with-config-file-scan-dir=/etc/php.d --with-config-file-path=/etc            //指定php.ini位置和擴展模塊配置文件目錄,指定/etc/php.ini。php-cli和web模式使用的php.ini路徑就一致了,php --ini   php -c "/etc/php.ini"

四、--with-apxs2=/usr/bin/apxs           //指定php做爲apache2的模塊安裝運行,不與php-fpm同時使用

 

8、linux composer和docker安裝

linux composer安裝
curl -sS https://getcomposer.org/installer | php
 
linux docker安裝
wget -qO- https://get.docker.com | sh

特別說明:

web目錄源碼備份不要出現.bak .ini等文件,由於curl -sS http://xxxx/xxx.bak會直接暴露源碼,是配置文件備份,就更危險了

 

9、mysql sql查詢數據導出

mysql> SHOW VARIABLES LIKE '%secure_file_priv%';
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.00 sec)

select * from user into outfile '/var/lib/mysql-files/test.xls';

 

 

10、git commit以後,想撤銷commit

詳細閱讀:https://www.cnblogs.com/lfxiao/p/9378763.html

 

11、mysql事務

set autocommit 1|0
1 mysql默認爲1,表示開啓自動提交。
0 表示沒有開啓自動提交
若是沒有開啓自動提交,當前session1所連接的mysql的全部操做都會當成一個事務直到你輸入rollback/commit;
當前事務纔算結束。當前事務結束前新的mysql鏈接時沒法讀取到任何session1的操做的結果的。
若是開起了,mysql會把每一個sql語句當成一個事務而後自動的commit。
固然不管開啓與否,start transaction commit|rollback都是獨立的事務。

 

12、curl post

curl -d "desc=刷卡測試樣例-支付&fee=2&barcode=134709973417403352" "http://api.syhuo.net/testpay/pay?pay_method=wxpay"

 

十3、捕捉json_encode、json_decode錯誤

 

json_decode 返回NULL 用json_last_error()

 

 

十4、jquey ajax同步異步

async: true, //異步,有時須要顯示指定異步請求,否則beforeSend裏設置效果有些出不來。

 

 

十5、redis服務參數優化:

maxmemory-samples 5
maxmemory-samples在redis-3.0.0中的默認配置爲5,若是增長,會提升LRU或TTL的精準度,redis做者測試的結果是當這個配置爲10時已經很是接近全量LRU的精準度了,而且增長maxmemory-samples會致使在主動清理時消耗更多的CPU時間

maxmemory
沒有帶單位尾巴的爲字節數,以B結尾的表示相應的大小。但須要注意KBKMBMGBG是不一樣的,如1K表示1000字節,而1KB則爲1024字節。若是maxmemory值爲0,表示不作限制

過時策略
maxmemory_policy

一、volatile-lru:只對設置了過時時間的key進行LRU(默認值) 

二、allkeys-lru : 刪除lru算法的key   

三、volatile-random:隨機刪除即將過時key   

四、allkeys-random:隨機刪除   

五、volatile-ttl : 刪除即將過時的   

六、noeviction : 永不過時,返回錯誤

redis 中的默認的過時策略是 volatile-lru

 

十6、php-cli執行測試語句或文件

php -r "new PDO('mysql:host=127.0.0.1;dbname=db_php', 'root', '');"

php -f ./phpinfo.php |grep -i 'pdo_mysql.default_socket'

 

十7、curl就是linux系統開發人員的瀏覽器,功能十分強大
-k  Allow connections to SSL sites without certs

-i, --include       Include protocol headers in the output

-H, --header LINE   Pass custom header LINE to server (H)

-X, --request COMMAND  Specify request command to use

 -S, --show-error    Show error. With -s, make curl show errors when they occur
 -s, --silent        Silent mode (don't output anything)

-d, --data DATA     HTTP POST data (H)  HTTP POST方式傳送數據

 

https:
curl -X POST -k -H 'Content-Type: application/json' -i 'https://upgradeapi.andshi.cn:11443/oauth2/access_token.json' --data '{
 "client_id": "shengyihuo",
 "client_secret": "bf579895ae4e5964bb4e78a09c01551b",
 "grant_type": "client_credentials"
}'

http:
curl -X POST -H 'Content-Type: application/json' -i 'http://upgradeapi.andshi.cn:8008/oauth2/access_token.json' --data '{
 "client_id": "shengyihuo",
 "client_secret": "bf579895ae4e5964bb4e78a09c01551b",
 "grant_type": "client_credentials"
}'

{"access_token":"26b90887f4878b020629764692b36bbd9f443508","expires_in":3600,"token_type":"Bearer","scope":null}


上傳
curl -X POST -H 'Content-Type: application/json' -i 'http://upgradeapi.andshi.cn:8008/remote/upload_data.json' --data '{
 "client_id": "shengyihuo",
 "access_token": "26b90887f4878b020629764692b36bbd9f443508",
 "sn": "18088004400001",
 "data": "{\"fingerprint\":\"0\",\"iccard\":\"0\",\"idcard\":\"0\",\"ir\":\"0\",\"magneticcard\":\"0\",\"moneybox\":\"0\",\"nfc\":\"0\",\"ocr\":\"0\",\"pinpad\":\"0\",\"printer\":\"0\",\"psam\":\"0\",\"qrcode\":\"0\",\"scangun\":\"0\"}"
}'


下達
curl -X POST -H 'Content-Type: application/json' -i 'http://upgradeapi.andshi.cn:8008/remote/get_data.json' --data '{
 "client_id": "shengyihuo",
 "access_token": "26b90887f4878b020629764692b36bbd9f443508",
 "sn": "18088004400001"
}'

p
curl -d "desc=刷卡測試樣例-支付&fee=1&barcode=134578732239251989" "http://api.syhuo.net/testpay/pay?pay_method=wxpay"

 

十8、解決項目生產,灰度、測試、開發多套環境不一樣加載各自環境配置文件的奇淫技巧

 

肯定apache加載了env_module、setenvif_module模塊

[root@VM_58_118_centos ~]# apachectl -t -D DUMP_MODULES|grep env
 env_module (shared)
 setenvif_module (shared)

 

apache站點設置環境變量

<VirtualHost *:80>
        ServerAdmin "master@master.com"
        DocumentRoot "/data/www/syhuo.net"
        #ServerName www.syhuo.net
        ServerName www.zhinengyingjian.work
        SetEnv RUN_MODE production
     <FilesMatch "\.(ico|gif|jpg|png|bmp|swf|js|css|eot)">
            SetEnv IMAGE 1
        </FilesMatch>

        ErrorLog "| /usr/sbin/rotatelogs /data/httpd/logs/www.syhuo.net-error-%Y%m%d.log 86400"
        #CustomLog "| /usr/sbin/rotatelogs /data/httpd/logs/www.syhuo.net-access-%y%m%d.log 86400" common env=!IMAGE
        <Directory "/">
                #Options Indexes FollowSymLinks
                Options FollowSymLinks
                AllowOverride All
                #AllowOverride None
                #Order Allow, Deny
                Order Deny,Allow
                Require all granted
        </Directory>
        <Directory ".git">
                Deny from All
                Require all denied
        </Directory>
</VirtualHost>

 

php讀取環境變量,加載對應的配置文件

<?php
    print_r($_SERVER['RUN_MODE']);      //輸出production
相關文章
相關標籤/搜索