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';
詳細閱讀: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結尾的表示相應的大小。但須要注意KB和K、MB和M、GB和G是不一樣的,如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