半全场:半全场

當前位置:半全场 > 新聞動態 > SEO技術 > 正文

昌吉運營小程序

半全场 www.zzlvt.com String sql=””INSERT INTO ACCOUNT VALUES(ACCOUNT_SEQ.NEXTVAL,?,?,SYSDATE)””; 期待的效果是誰先build好誰先返回,而不是一起,可以試試如下兩種方案,其中第二種是可以做到真正的并行 1:將循環中的每個webpack任務構建方式分別寫到異步里面例如setTimeOut。 2:開啟多個node進程,每個進程上執行webpack構建,nodejs執行是單線程,但是你的結果和你寫的方式有關系。 34965.04 requests per second 1、前言 分頁顯示是一種非常常見的瀏覽和顯示大量數據的方法,屬于web編程中最常處理的事件之一。對于web編程的老手來說,編寫這種代碼實在是和呼吸一樣自然,但是對于初學者來說,常常對這個問題摸不著頭緒,因此特地撰寫此文對這個問題進行詳細的講解,力求讓看完這篇文章的朋友在看完以后對于分頁顯示的原理和實現方法有所了解。本文適合初學者閱讀,所有示例代碼均使用php編寫。 2、原理 所謂分頁顯示,也就是將數據庫中的結果集人為的分成一段一段的來顯示,這里需要兩個初始的參數: 每頁多少條記錄($PageSize)? 當前是第幾頁($CurrentPageID)? 現在只要再給我一個結果集,我就可以顯示某段特定的結果出來。 至于其他的參數,比如:上一頁($PreviousPageID)、下一頁($NextPageID)、總頁數($numPages)等等,都可以根據前邊這幾個東西得到。 以mysql數據庫為例,如果要從表內截取某段內容,sql語句可以用:select*fromtablelimitoffset,rows??純聰旅嬉蛔閟ql語句,嘗試一下發現其中的規率。 前10條記錄:select*fromtablelimit0,10 第11至20條記錄:select*fromtablelimit10,10 第21至30條記錄:select*fromtablelimit20,10 …… 這一組sql語句其實就是當$PageSize=10的時候取表內每一頁數據的sql語句,我們可以總結出這樣一個模板: select*fromtablelimit($CurrentPageID-1)*$PageSize,$PageSize 拿這個模板代入對應的值和上邊那一組sql語句對照一下看看是不是那么回事。搞定了最重要的如何獲取數據的問題以后,剩下的就僅僅是傳遞參數,構造合適的sql語句然后使用php從數據庫內獲取數據并顯示了。以下我將用具體代碼加以說明。 3、簡單代碼 請詳細閱讀以下代碼,自己調試運行一次,最好把它修改一次,加上自己的功能,比如搜索等等。 <?php //建立數據庫連接 $link=mysql_connect(“localhost”,”mysql_user”,”mysql_password”) ordie(“Couldnotconnect:”.mysql_error()); //獲取當前頁數 if(isset($_GET[page])){ $page=intval($_GET[page]); } else{ $page=1; } //每頁數量 $PageSize=10; //獲取總數據量 $sql=”selectcount(*)asamountfromtable”; $result=mysql_query($sql); $row=mysql_fetch_row($result); $amount=$row[amount]; //記算總共有多少頁 if($amount){ if($amount<$page_size){$page_count=1;}//如果總數據量小于$PageSize,那么只有一頁 if($amount%$page_size){//取總數據量除以每頁數的余數 $page_count=(int)($amount/$page_size)+1;//如果有余數,則頁數等于總數據量除以每頁數的結果取整再加一 }else{ $page_count=$amount/$page_size;//如果沒有余數,則頁數等于總數據量除以每頁數的結果 } } else{ $page_count=0; } //翻頁鏈接 $page_string=; if($page==1){ $page_string.=第一頁|上一頁|; } else{ $page_string.=<ahref=”/?page=1>”;第一頁|<ahref=”/?page=.”($page-1).>上一頁|; } if(($page==$page_count)||($page_count==0)){ $page_string.=下一頁|尾頁; } else{ $page_string.=<ahref=”/?page=.”($page+1).>下一頁|<ahref=”/?page=.”$page_count.>尾頁; } //獲取數據,以二維數組格式返回結果 if($amount){ $sql=”select*fromtableorderbyiddesclimit”.($page-1)*$page_size.”,$page_size”; $result=mysql_query($sql); while($row=mysql_fetch_row($result)){ $rowset[]=$row; } }else{ $rowset=array(); } //沒有包含顯示結果的代碼,那不在討論范圍,只要用foreach就可以很簡單的用得到的二維數組來顯示結果 ?> 4、OO風格代碼 以下代碼中的數據庫連接是使用的peardb類進行處理 <?php //FileName:Pager.class.php //分頁類,這個類僅僅用于處理數據結構,不負責處理顯示的工作 ClassPager { var$PageSize;//每頁的數量 var$CurrentPageID;//當前的頁數 var$NextPageID;//下一頁 var$PreviousPageID;//上一頁 var$numPages;//總頁數 var$numItems;//總記錄數 var$isFirstPage;//是否第一頁 var$isLastPage;//是否最后一頁 var$sql;//sql查詢語句 functionPager($option) { global$db; $this->_setOptions($option); //總條數 if(!isset($this->numItems)) { $res=$db->query($this->sql); $this->numItems=$res->numRows(); } //總頁數 if($this->numItems>0) { if($this->numItems<$this->PageSize){$this->numPages=1;} if($this->numItems%$this->PageSize) { $this->numPages=(int)($this->numItems/$this->PageSize)+1; } else { $this->numPages=$this->numItems/$this->PageSize; } } else { $this->numPages=0; } switch($this->CurrentPageID) { case$this->numPages==1: $this->isFirstPage=true; $this->isLastPage=true; break; case1: $this->isFirstPage=true; $this->isLastPage=false; break; case$this->numPages: $this->isFirstPage=false; $this->isLastPage=true; break; default: $this->isFirstPage=false; $this->isLastPage=false; } if($this->numPages>1) { if(!$this->isLastPage){$this->NextPageID=$this->CurrentPageID+1;} if(!$this->isFirstPage){$this->PreviousPageID=$this->CurrentPageID-1;} } returntrue; } /*** * *返回結果集的數據庫連接 *在結果集比較大的時候可以直接使用這個方法獲得數據庫連接,然后在類之外遍歷,這樣開銷較小 *如果結果集不是很大,可以直接使用getPageData的方式獲取二維數組格式的結果 *getPageData方法也是調用本方法來獲取結果的 * ***/ functiongetDataLink() { if($this->numItems) { global$db; $PageID=$this->CurrentPageID; $from=($PageID-1)*$this->PageSize; $count=$this->PageSize; $link=$db->limitQuery($this->sql,$from,$count);//使用PearDB::limitQuery方法保證數據庫兼容性 return$link; } else { returnfalse; } } /*** * *以二維數組的格式返回結果集 * ***/ functiongetPageData() { if($this->numItems) { if($res=$this->getDataLink()) { if($res->numRows()) { while($row=$res->fetchRow()) { $result[]=$row; } } else { $result=array(); } return$result; } else { returnfalse; } } else { returnfalse; } } function_setOptions($option) { $allow_options=array( PageSize, CurrentPageID, sql, numItems ); foreach($optionas$key=>$value) { if(in_array($key,$allow_options)&&($value!=null)) { $this->$key=$value; } } returntrue; } } ?> <?php //FileName:test_pager.php //這是一段簡單的示例代碼,前邊省略了使用peardb類建立數據庫連接的代碼 require”Pager.class.php”; if(isset($_GET[page])) { $page=(int)$_GET[page]; } else { $page=1; } $sql=”select*fromtableorderbyid”; $pager_option=array( “sql”=>$sql, “PageSize”=>10, “CurrentPageID”=>$page ); if(isset($_GET[numItems])) { $pager_option[numItems]=(int)$_GET[numItems]; } $pager=newPager($pager_option); $data=$pager->getPageData(); if($pager->isFirstPage) { $turnover=”首頁|上一頁|”; } else { $turnover=”<ahref=?page=1&numItems=”.$pager->numItems.”>首頁|<ahref=”/?page=”.$pager->PreviousPageID.”&numItems=”.$pager->numItems.”>上一頁|”; } if($pager->isLastPage) { $turnover.=”下一頁|尾頁”; } else { $turnover.=”<ahref=”/?page=”.$pager->NextPageID.”&numItems=”.$pager->numItems.”>下一頁|<ahref=”/?page=”.$pager->numPages.”&numItems=”.$pager->numItems.”>尾頁”; } ?> 需要說明的地方有兩個: 這個類僅僅處理數據,并不負責處理顯示,因為我覺得將數據的處理和結果的顯示都放到一個類里邊實在是有些勉強。顯示的時候情況和要求多變,不如自己根據類給出的結果處理,更好的方法是根據這個Pager類繼承一個自己的子類來顯示不同的分頁,比如顯示用戶分頁列表可以: <?php ClassMemberPagerextendsPager { functionshowMemberList() { global$db; $data=$this->getPageData(); //顯示結果的代碼 //…… } } ///調用 if(isset($_GET[page])) { $page=(int)$_GET[page]; } else { $page=1; } $sql=”select*frommembersorderbyid”; $pager_option=array( “sql”=>$sql, “PageSize”=>10, “CurrentPageID”=>$page ); if(isset($_GET[numItems])) { $pager_option[numItems]=(int)$_GET[numItems]; } $pager=newMemberPager($pager_option); $pager->showMemberList(); ?> 第二個需要說明的地方就是不同數據庫的兼容性,在不同的數據庫里截獲一段結果的寫法是不一樣的。 mysql:select*fromtablelimitoffset,rows pgsql:select*fromtablelimitmoffsetn …… 所以要在類里邊獲取結果的時候需要使用peardb類的limitQuery方法。 ok,寫完收功,希望花時間看完這些文字的你不覺得是浪費了時間。,1、前言 分頁顯示是一種非常常見的瀏覽和顯示大量數據的方法,屬于web編程中最常處理的事件之一。對于web編程的老手來說,編寫這種代碼實在是和呼吸一樣自然,但是對于初學者來說,常常對這個問題摸不著頭緒,因此特地撰寫此文對這個問題進行詳細的講解,力求讓看完這篇文章的朋友在看完以后對于分頁顯示的原理和實現方法有所了解。本文適合初學者閱讀,所有示例代碼均使用php編寫。 2、原理 所謂分頁顯示,也就是將數據庫中的結果集人為的分成一段一段的來顯示,這里需要兩個初始的參數: 每頁多少條記錄($PageSize)? 當前是第幾頁($CurrentPageID)? 現在只要再給我一個結果集,我就可以顯示某段特定的結果出來。 至于其他的參數,比如:上一頁($PreviousPageID)、下一頁($NextPageID)、總頁數($numPages)等等,都可以根據前邊這幾個東西得到。 以mysql數據庫為例,如果要從表內截取某段內容,sql語句可以用:select*fromtablelimitoffset,rows??純聰旅嬉蛔閟ql語句,嘗試一下發現其中的規率。 前10條記錄:select*fromtablelimit0,10 第11至20條記錄:select*fromtablelimit10,10 第21至30條記錄:select*fromtablelimit20,10 …… 這一組sql語句其實就是當$PageSize=10的時候取表內每一頁數據的sql語句,我們可以總結出這樣一個模板: select*fromtablelimit($CurrentPageID-1)*$PageSize,$PageSize 拿這個模板代入對應的值和上邊那一組sql語句對照一下看看是不是那么回事。搞定了最重要的如何獲取數據的問題以后,剩下的就僅僅是傳遞參數,構造合適的sql語句然后使用php從數據庫內獲取數據并顯示了。以下我將用具體代碼加以說明。 3、簡單代碼 請詳細閱讀以下代碼,自己調試運行一次,最好把它修改一次,加上自己的功能,比如搜索等等。 <?php //建立數據庫連接 $link=mysql_connect(“localhost”,”mysql_user”,”mysql_password”) ordie(“Couldnotconnect:”.mysql_error()); //獲取當前頁數 if(isset($_GET[page])){ $page=intval($_GET[page]); } else{ $page=1; } //每頁數量 $PageSize=10; //獲取總數據量 $sql=”selectcount(*)asamountfromtable”; $result=mysql_query($sql); $row=mysql_fetch_row($result); $amount=$row[amount]; //記算總共有多少頁 if($amount){ if($amount<$page_size){$page_count=1;}//如果總數據量小于$PageSize,那么只有一頁 if($amount%$page_size){//取總數據量除以每頁數的余數 $page_count=(int)($amount/$page_size)+1;//如果有余數,則頁數等于總數據量除以每頁數的結果取整再加一 }else{ $page_count=$amount/$page_size;//如果沒有余數,則頁數等于總數據量除以每頁數的結果 } } else{ $page_count=0; } //翻頁鏈接 $page_string=; if($page==1){ $page_string.=第一頁|上一頁|; } else{ $page_string.=<ahref=”/?page=1>”;第一頁|<ahref=”/?page=.”($page-1).>上一頁|; } if(($page==$page_count)||($page_count==0)){ $page_string.=下一頁|尾頁; } else{ $page_string.=<ahref=”/?page=.”($page+1).>下一頁|<ahref=”/?page=.”$page_count.>尾頁; } //獲取數據,以二維數組格式返回結果 if($amount){ $sql=”select*fromtableorderbyiddesclimit”.($page-1)*$page_size.”,$page_size”; $result=mysql_query($sql); while($row=mysql_fetch_row($result)){ $rowset[]=$row; } }else{ $rowset=array(); } //沒有包含顯示結果的代碼,那不在討論范圍,只要用foreach就可以很簡單的用得到的二維數組來顯示結果 ?> 4、OO風格代碼 以下代碼中的數據庫連接是使用的peardb類進行處理 <?php //FileName:Pager.class.php //分頁類,這個類僅僅用于處理數據結構,不負責處理顯示的工作 ClassPager { var$PageSize;//每頁的數量 var$CurrentPageID;//當前的頁數 var$NextPageID;//下一頁 var$PreviousPageID;//上一頁 var$numPages;//總頁數 var$numItems;//總記錄數 var$isFirstPage;//是否第一頁 var$isLastPage;//是否最后一頁 var$sql;//sql查詢語句 functionPager($option) { global$db; $this->_setOptions($option); //總條數 if(!isset($this->numItems)) { $res=$db->query($this->sql); $this->numItems=$res->numRows(); } //總頁數 if($this->numItems>0) { if($this->numItems<$this->PageSize){$this->numPages=1;} if($this->numItems%$this->PageSize) { $this->numPages=(int)($this->numItems/$this->PageSize)+1; } else { $this->numPages=$this->numItems/$this->PageSize; } } else { $this->numPages=0; } switch($this->CurrentPageID) { case$this->numPages==1: $this->isFirstPage=true; $this->isLastPage=true; break; case1: $this->isFirstPage=true; $this->isLastPage=false; break; case$this->numPages: $this->isFirstPage=false; $this->isLastPage=true; break; default: $this->isFirstPage=false; $this->isLastPage=false; } if($this->numPages>1) { if(!$this->isLastPage){$this->NextPageID=$this->CurrentPageID+1;} if(!$this->isFirstPage){$this->PreviousPageID=$this->CurrentPageID-1;} } returntrue; } /*** * *返回結果集的數據庫連接 *在結果集比較大的時候可以直接使用這個方法獲得數據庫連接,然后在類之外遍歷,這樣開銷較小 *如果結果集不是很大,可以直接使用getPageData的方式獲取二維數組格式的結果 *getPageData方法也是調用本方法來獲取結果的 * ***/ functiongetDataLink() { if($this->numItems) { global$db; $PageID=$this->CurrentPageID; $from=($PageID-1)*$this->PageSize; $count=$this->PageSize; $link=$db->limitQuery($this->sql,$from,$count);//使用PearDB::limitQuery方法保證數據庫兼容性 return$link; } else { returnfalse; } } /*** * *以二維數組的格式返回結果集 * ***/ functiongetPageData() { if($this->numItems) { if($res=$this->getDataLink()) { if($res->numRows(

{ganrao}