Time of Update: 2017-06-23
開發的系統中出現大量資料庫sleep狀態的空串連,於此同時通過Log發現系統中通過php的curl請求第三方API介面的反饋出現大量異常,不由得把2者聯絡起來分析原因。日誌反應第三方介面響應緩慢,並且結果為空白,原因不明,但是能想象到php發出curl請求後一直等待串連返回,等待過程中資料庫連接開始sleep,直到curl逾時,進程執行完畢資料庫連結得以釋放。1.
Time of Update: 2017-06-23
1. PHP sleep() 函數定義和用法sleep() 函數延遲代碼執行若干秒。文法sleep(seconds)seconds 必需。以秒計的暫停時間。傳回值若成功,返回 0,否則返回 false。錯誤/異常如果指定的描述 seconds 是負數,該函數將產生一個 E_WARNING。例子<?phpecho date('h:i:s') . "<br />"; //暫停 10 秒sleep(10);//重新開始echo date('
Time of Update: 2017-06-23
1.each的用法先看APIarray each ( array &$array )api裡是這麼描述的:each — 返回數組中當前的鍵/值對並將數組指標向前移動一步我們先來看看返回的數組是怎麼樣的?<?php $arr = array('你','若','安','好','便','是','晴','天');print_r(each($arr));print_
Time of Update: 2017-06-23
在使用PHP作為程式設計語言的過程中,我們經常會遇到需要將一段代碼執行多次的情況。這時就需要用到PHP迴圈了。PHP提供了三種不同類型的迴圈供你在合適的情境中使用:For 迴圈While 迴圈Foreach 迴圈For迴圈for迴圈用於已經確定將你的運算式需要執行多少次的情況。文法:for (initialization; condition; increment){ code to be executed;}<?phpfor($i=1; $i<=100000; $i++){
Time of Update: 2017-06-23
迴圈結構 一、while迴圈while(運算式) { 迴圈體;//反覆執行,直到運算式為假 }代碼:$index = 1;while ($index<5){ print "Number is {$index}"; $index++;}print "Done";運行結果:Number is 1Number is 2Number is 3Number is 4Done二、do while迴圈do {
Time of Update: 2017-06-23
PHP 4 引入了 foreach 結構,和 Perl 以及其他語言很像。這隻是一種遍曆數組簡便方法。foreach 僅能用於數組,當試圖將其用於其它資料類型或者一個未初始化的變數時會產生錯誤。有兩種文法,第二種比較次要但卻是第一種的有用的擴充。 foreach (array_expression as $value) statementforeach (array_expression as $key => $value) statement第一種格式遍曆給定的 array_
Time of Update: 2017-06-23
foreach()有兩種用法:1: foreach(array_name as $value){ statement;} 這裡的array_name是你要遍曆的數組名,每次迴圈中,array_name數組的當前元素的值被賦給$value,並且數組內部的下標向下移一步,也就是下次迴圈回得到下一個元素。2:foreach(array_name as $key => $value){ statement; } 這裡跟第一種方法的區別就是多了個$
Time of Update: 2017-06-23
不多說了,每個方法都注釋了,可以直接用:<?php//這個類似用來擷取訪客資訊的//方便統計class visitorInfo{ //擷取訪客ip public function getIp() { $ip=false; if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; }
Time of Update: 2017-06-23
今天上午找資料,發現了mongodb,閑來無事就研究了下,本人用的是phpstudy整合套件添加mongodb擴充。1.添加mongo、mongodb擴充 phpstudyIntegration Environment一般用的是32位php,去官網下載32位的mongo、mongodb擴充 mongo: mongodb:
Time of Update: 2017-06-23
Closure,匿名函數,是php5.3的時候引入的,又稱為Anonymous functions。字面意思也就是沒有定義名字的函數。比如以下代碼(檔案名稱是do.php)<?phpfunction A() {return 100;};function B(Closure $callback){return $callback();}$a = B(A());print_r($a);//輸出:Fatal error: Uncaught TypeError: Argument 1
Time of Update: 2017-06-23
fastcgi_finish_request()是php-fpm提供的可提前結束串連響應資料並在後端繼續執行任務的函數,為了執行耗時較長的任務或提高響應速度的時候,我們可以使用這個函數來簡單實現,當然,更好的方式是使用隊列。在Laravel中,發送響應就會調用fastcgi_finish_request()(若存在),之後會調用terminate()方法,該方法會依次執行註冊的中介軟體中的terminate()方法。文檔中使用 Terminable Middleware 是需要註冊全域中介軟體,
Time of Update: 2017-06-23
為什麼上傳大檔案總是失敗,上傳小檔案就沒有問題。關於PHP大檔案上傳失敗的原因及解決方案如下:第1種情況:檔案上傳時存放檔案的臨時目錄必須是開啟的並且是 PHP 進程所有者使用者可寫的目錄。如果未指定則 PHP 使用系統預設值。php.ini檔案中upload_tmp_dir用來說明PHP上傳的檔案放置的臨時目錄,要想上傳檔案,得保證伺服器沒有關閉臨時檔案並對該檔案夾有寫入的許可權。第2種情況:max_execution_time 的值必須足夠大。變數 max_execution_time
Time of Update: 2017-06-23
HTTP 中 GET 與 POST 的區別 GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。最直觀的區別就是GET把參數包含在URL中,POST通過request
Time of Update: 2017-06-23
<?php/*頁面控制器模式:按我的理解就是將商務邏輯和視圖分離開來(通常最簡便的寫法是php和html代碼是混合在一個檔案裡面的),即一個商務邏輯檔案對應一個視圖檔案。 程式碼範例即註解如下:*///頁面控制器模式namespace woo\controller;//商務邏輯檔案 (檔案名稱AddVenue.php)abstract class PageController { //基類private $request;function __construct (){ $
Time of Update: 2017-06-23
這一次,本K帶大家來看一下關於PHP中數組、字串的一些注意事項和函數(方法)。一、PHP中的數組(一)PHP中的數組簡介 數群組類型是PHP兩種複合資料型別之一。根據下標的不同,可以將PHP中的數組分成關聯陣列和索引數組:前者指下標為字串格式,每個下標字串與數組的值一一對應;後者下標為數字,與JS中的數組下標相同,但在一些規則上與JS相差甚遠(後述)。
Time of Update: 2017-06-23
前言在上一章中,我們初步瞭解了PHP的網頁基礎和PHP的入門基礎,今天繼續給大家分享更多有關PHP的知識。 理論知識看起來可能比較枯燥一些,但是我們的實踐(敲代碼)畢竟離不開它。只有理論與實踐相結合,才可以用最少的代碼實現更多的功能。***本章關鍵字:運算子;可變變數;取址符號;分支與迴圈;流程式控制制語句goto。 下面,我們來看瞭解一下PHP中的運算子及更多PHP知識基礎: 一運算子1、算術運算子:+ - * / % ++ --2、賦值運算子:= += -= *= /= %=
Time of Update: 2017-06-23
PHP 5 String 函數PHP String 函數是 PHP 核心的組成部分。無需安裝即可使用這些函數。函數描述addcslashes()返回在指定的字元前添加反斜線的字串。addslashes()返回在預定義的字元前添加反斜線的字串。bin2hex()把 ASCII 字元的字串轉換為十六進位值。chop()移除字串右側的空白字元或其他字元。chr()從指定 ASCII
Time of Update: 2017-06-23
vagrant是簡便虛擬機器操作的一個軟體,而使用虛擬機器有幾個好處:1、為了開發環境與生產環境一致(很多開發環境為windows而生產環境為linux),不至於出現在開發環境正常而移步到正式生產環境時出現各種問題,而vagrant通過共用檔案,可以實現在主機(windows)下的IDE編寫代碼操作,直接在虛擬機器(linux)中運行展示出效果。2、在vagrant中只需要搭配一次開發環境,然後就可以將搭配好的環境系統鏡像打包發送給其他的同事用了,其他同事只需要下載vagrant和virtual
Time of Update: 2017-06-23
php 產生唯一id,網上查了下,有很多的方法1、md5(time() . mt_rand(1,1000000)); 這種方法有一定的機率會出現重複2、php內建函數uniqid() uniqid() 函數基於以微秒計的目前時間,產生一個唯一的 ID. w3school參考手冊有一句話:"由於基於系統時間,通過該函數產生的 ID 不是最佳的。如需產生絕對唯一的 ID,請使用 md5() 函數"。 下面方法返回結果類似:5DDB650F-4389-F4A9-A100-5
Time of Update: 2017-06-23
介紹在 Laravel 中,實現基於傳統表單的登陸和授權已經非常簡單,但是如何滿足 API 情境下的授權需求呢?在 API 情境裡通常通過令牌來實現使用者授權,而非維護請求之間的 Session 狀態。現在 Laravel 項目中可以使用 Passport 輕而易舉地實現 API 授權過程,通過 Passport 可以在幾分鐘之內為你的應用程式添加完整的 OAuth2 服務端實現。安裝使用 Composer 依賴包管理器安裝 Passport : composer require