PHP 用 XML-RPC の導(dǎo)入と使用
May 26, 2018 pm 02:15 PM1. XML-RPCとは何ですか?
XML-RPCは、Userland Software社によって設(shè)計(jì)された形式です。HTTPプロトコルを使用してXMLを送信し、リモートプログラム呼び出し()を取得する形式ファイルですリモートプロシージャコール)の送信方法。公式ウェブサイトはwww.xmlrpc.comです。
使用するPHP XML-RPCフレームワーク(クラスコレクション)があります PHP を書(shū)く言語(yǔ)XML-R PCクライアントとサーバー?,F(xiàn)在の安定リリース バージョンは 2.2 で、ダウンロード アドレスは http://sourceforge.net/projects/phpxmlrpc/files/phpxmlrpc/2.2.2/xmlrpc-2.2.2.tar.gz/download です。 。 さらに、
www.xmlrpc.com(Perl、Pythonなど) の他の言語(yǔ)のXML-RPCのリストも見(jiàn)つけることができます。 。 この記事では、PHP
クラスライブラリのXML-RPCの使用法を紹介します。 Ⅱ。システム動(dòng)作要件
このクラス ライブラリは、スケーラビリティと下位互換性を考慮して設(shè)計(jì)されています。したがって、ほとんどの既存の
PHP バージョンをサポートします。 PHPの最小必要バージョンは4.2です。このライブラリは、PHP 4.0.5および4.1をサポートする互換性レイヤーを提供します。もちろん、公式では PHP 5.0 以降を使用することを推奨しています。 リモートサーバーと通信するためにSSLまたはHTTP 1.1を使用したい場(chǎng)合は、「CURL」拡張機(jī)能をPHPにコンパイルする必要があることに注意してください。 なお、PHPに付屬するネイティブ拡張機(jī)能「xmlrpc」は、ここで紹介するXML-RPCクラスライブラリとは別のものなので、それを PHP中にコンパイルします。 3つ。関連クラスの紹介 1. string 、double、dateTime.iso8601、base6、複合型は次のとおりです: array 、構(gòu)造體 。 Xmlrpcvalの機(jī)能は、PHPの型をこれらの型に変換し、XML-RPCに入れて送信することです。 scalarVal():如果$val->kindOf()=="scalar",則直接返回改對(duì)象的PHP對(duì)應(yīng)的值。 2.xmlrpcmsg 相關(guān)函數(shù): 相關(guān)方法: 相關(guān)方法: 四,一個(gè)實(shí)際例子 在服務(wù)度的interface.php中: 在客戶端的client.php中: 敢死隊(duì)2在線觀看<span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">123</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">int</span><span style="color: #000000;">"</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">將123作為XML-RPC int類型</span><span style="color: #008000;"><br/></span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">123</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">string</span><span style="color: #000000;">"</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">將123作為XML-RPC string類型</span><span style="color: #008000;"><br/></span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">123</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">如果沒(méi)有第二個(gè)參數(shù),系統(tǒng)默認(rèn)將其作為string類型</span><span style="color: #008000;"><br/></span><span style="color: #000000;"><br/></span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval( </span><span style="color: #008000;">//</span><span style="color: #008000;">XML-RPC array類型 </span><span style="color: #008000;"><br/></span><span style="color: #0000ff;">array</span><span style="color: #000000;">(<br/> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">"</span><span style="color: #000000;">string1</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;"> <br/> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">"</span><span style="color: #000000;">string2</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;"><br/> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">"</span><span style="color: #000000;">string3</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">array</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br/> <br/></span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval( </span><span style="color: #008000;">//</span><span style="color: #008000;">XML-RPC struct類型 </span><span style="color: #008000;"><br/></span><span style="color: #0000ff;">array</span><span style="color: #000000;">( </span><span style="color: #000000;">"</span><span style="color: #000000;">name</span><span style="color: #000000;">"</span><span style="color: #000000;">=></span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">"</span><span style="color: #000000;">codebean</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">string</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;"><br/> </span><span style="color: #000000;">"</span><span style="color: #000000;">age</span><span style="color: #000000;">"</span><span style="color: #000000;">=></span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">34</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">int</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;"><br/> </span><span style="color: #000000;">"</span><span style="color: #000000;">address</span><span style="color: #000000;">"</span><span style="color: #000000;">=></span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval( <br/> </span><span style="color: #0000ff;">array</span><span style="color: #000000;">( </span><span style="color: #000000;">"</span><span style="color: #000000;">street</span><span style="color: #000000;">"</span><span style="color: #000000;">=></span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcva(</span><span style="color: #000000;">"</span><span style="color: #000000;">xiaoyinxilu</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">string</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">city</span><span style="color: #000000;">"</span><span style="color: #000000;">=></span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">"</span><span style="color: #000000;">beijing</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">string</span><span style="color: #000000;">"</span><span style="color: #000000;">) )</span><span style="color: #000000;">,</span><span style="color: #000000;"> <br/> </span><span style="color: #000000;">"</span><span style="color: #000000;">struct</span><span style="color: #000000;">"</span><span style="color: #000000;">))</span><span style="color: #000000;">,</span><span style="color: #000000;"><br/></span><span style="color: #000000;">"</span><span style="color: #000000;">struct</span><span style="color: #000000;">"</span><span style="color: #000000;">);</span>
関連メソッド: kindOf(): オブジェクトの基本タイプを返します: "struct","array","scalar"。
arrayMen(int $n):如果$val->kindOf()=="array",返回$val中第n個(gè)的值。
arraySize():如果$val->kindOf()=="array",返回$val的元素個(gè)數(shù)。
這個(gè)類提供一個(gè)向XML-RPC服務(wù)器發(fā)送請(qǐng)求的對(duì)象,客戶端發(fā)送xmlrpcmsg到服務(wù)器,服務(wù)器返回一個(gè)xmlrpcresp。<span style="color: #008000;">//</span><span style="color: #008000;">請(qǐng)求服務(wù)器的examples.getStateName方法,參數(shù)是123</span><span style="color: #008000;"><br/></span><span style="color: #800080;">$message</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcmsg(</span><span style="color: #000000;">"</span><span style="color: #000000;">examples.getStateName</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #0000ff;">array</span><span style="color: #000000;">(</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">123</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">int</span><span style="color: #000000;">"</span><span style="color: #000000;">)));</span>
getNumParams():獲取xmlrpcmsg對(duì)象的參數(shù)的總數(shù)。
getParam(int $n):獲取xmlrpcmsg對(duì)象的第n個(gè)數(shù)的值。
3.xmlrpc_client
客戶端的基本類。<span style="color: #008000;">//</span><span style="color: #008000;">在服務(wù)端www.test.com上面的interface.php路徑建立相關(guān)鏈接。 </span><span style="color: #008000;"><br/></span><span style="color: #800080;">$client</span><span style="color: #000000;">=</span><span style="color: #000000;"> nw xmlrpc_client(</span><span style="color: #000000;">"</span><span style="color: #000000;">/interface.php</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">ww.test.com</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">80</span><span style="color: #000000;">);</span>
send($message,30):向服務(wù)端發(fā)送$message,超時(shí)時(shí)間是30秒。
setDebug(int $level):設(shè)置是否輸出調(diào)試信息,默認(rèn)是0即不輸出調(diào)試信息。$level是1,打印服務(wù)端的HTTP頭信息及XML信息。$level是2,同時(shí)打印服務(wù)端和客戶端的HTTP頭信息及XML信息。
4.xmlrpcresp
該類主要包含XML-RPC請(qǐng)求返回的結(jié)果。Xmlrpc_client的send方法返回該類型。<span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcresp(xmlrpcval </span><span style="color: #800080;">$val</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">在服務(wù)端生成一個(gè)xmlrpcresp對(duì)象</span><span style="color: #008000;"><br/></span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcresp(</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #000000;">int </span><span style="color: #800080;">$errcode</span><span style="color: #000000;">,</span><span style="color: #0000ff;">string</span><span style="color: #800080;">$err_string</span><span style="color: #000000;">);</span><span style="color: #008000;">//</span><span style="color: #008000;">服務(wù)端出錯(cuò)時(shí),可以返回該類型。</span>
faultCode():客戶端獲取服務(wù)端返回的出錯(cuò)代碼。
faultString():客戶端獲取服務(wù)端返回的出錯(cuò)信息。
Value():客戶端獲取服務(wù)端返回的值。
5.xmlrpc_server
服務(wù)端的基本類。<span style="color: #0000ff;">function</span><span style="color: #000000;"> test(</span><span style="color: #800080;">$xmlrpcval</span><span style="color: #000000;">){<br/> </span><span style="color: #0000ff;">return</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcresp(</span><span style="color: #800080;">$val</span><span style="color: #000000;">);<br/>}<br/><br/></span><span style="color: #008000;">//</span><span style="color: #008000;">客戶端可以訪問(wèn)examples.myTest來(lái)實(shí)際訪問(wèn)test()函數(shù) </span><span style="color: #008000;"><br/></span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpc_server( <br/> </span><span style="color: #0000ff;">array</span><span style="color: #000000;">( <br/> </span><span style="color: #000000;">"</span><span style="color: #000000;">examples.myTest</span><span style="color: #000000;">"</span><span style="color: #000000;">=></span><span style="color: #0000ff;">array</span><span style="color: #000000;">(</span><span style="color: #000000;">"</span><span style="color: #000000;">function</span><span style="color: #000000;">"</span><span style="color: #000000;">=></span><span style="color: #000000;">"</span><span style="color: #000000;">test</span><span style="color: #000000;">"</span><span style="color: #000000;">) <br/>));</span>
假設(shè)服務(wù)度是my.rpcserver.com,提供服務(wù)的路徑是interface.php,客戶端是my.test.com.<span style="color: #000000;"><?</span><span style="color: #000000;">php<br/></span><span style="color: #0000ff;">include</span><span style="color: #000000;">'</span><span style="color: #000000;">./lib/xmlrpc.inc</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br/></span><span style="color: #0000ff;">include</span><span style="color: #000000;">'</span><span style="color: #000000;">./lib/xmlrpcs.inc</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br/><br/></span><span style="color: #0000ff;">function</span><span style="color: #000000;"> foo(</span><span style="color: #800080;">$xmlrpcmsg</span><span style="color: #000000;">){<br/> </span><span style="color: #800080;">$par1</span><span style="color: #000000;">=</span><span style="color: #800080;">$xmlrpcmsg</span><span style="color: #000000;">-></span><span style="color: #000000;">getParam(</span><span style="color: #000000;">0</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">獲取第一個(gè)參數(shù)</span><span style="color: #008000;"><br/></span><span style="color: #800080;">$val1</span><span style="color: #000000;">=</span><span style="color: #800080;">$par1</span><span style="color: #000000;">-></span><span style="color: #000000;">scalarval(); </span><span style="color: #008000;">//</span><span style="color: #008000;">轉(zhuǎn)換成PHP對(duì)應(yīng)的值</span><span style="color: #008000;"><br/></span><span style="color: #000000;"> <br/> </span><span style="color: #800080;">$par2</span><span style="color: #000000;">=</span><span style="color: #800080;">$xmlrpcmsg</span><span style="color: #000000;">-></span><span style="color: #000000;">getParam(</span><span style="color: #000000;">1</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">獲取第二個(gè)參數(shù)</span><span style="color: #008000;"><br/></span><span style="color: #800080;">$val2</span><span style="color: #000000;">=</span><span style="color: #800080;">$par2</span><span style="color: #000000;">-></span><span style="color: #000000;">scalarval(); </span><span style="color: #008000;">//</span><span style="color: #008000;">轉(zhuǎn)換成PHP對(duì)應(yīng)的值</span><span style="color: #008000;"><br/></span><span style="color: #000000;"> <br/> </span><span style="color: #800080;">$par3</span><span style="color: #000000;">=</span><span style="color: #800080;">$xmlrpcmsg</span><span style="color: #000000;">-></span><span style="color: #000000;">getParam(</span><span style="color: #000000;">2</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">獲取第二個(gè)參數(shù)<br/><br/> //轉(zhuǎn)換成PHP對(duì)應(yīng)的值</span><span style="color: #008000;"><br/></span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #800080;">$i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">; </span><span style="color: #800080;">$i</span><span style="color: #000000;"><</span><span style="color: #800080;">$par3</span><span style="color: #000000;">-></span><span style="color: #000000;">arraySize(); </span><span style="color: #800080;">$i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br/> </span><span style="color: #800080;">$v</span><span style="color: #000000;">=</span><span style="color: #800080;">$par3</span><span style="color: #000000;">-></span><span style="color: #000000;">arrayMem(</span><span style="color: #800080;">$i</span><span style="color: #000000;">);<br/> </span><span style="color: #800080;">$val</span><span style="color: #000000;">[] </span><span style="color: #000000;">=</span><span style="color: #800080;">$v</span><span style="color: #000000;">-></span><span style="color: #000000;">scalarVal()</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;"><br/></span><span style="color: #000000;">"</span><span style="color: #000000;">;<br/> }<br/> <br/> </span><span style="color: #800080;">$msg1</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #008080;">strrev</span><span style="color: #000000;">(</span><span style="color: #800080;">$val1</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">string</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br/> </span><span style="color: #800080;">$msg2</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #008080;">strrev</span><span style="color: #000000;">(</span><span style="color: #800080;">$val2</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">int</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br/><br/> </span><span style="color: #800080;">$msg</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #0000ff;">array</span><span style="color: #000000;">(</span><span style="color: #800080;">$msg1</span><span style="color: #000000;">,</span><span style="color: #800080;">$msg2</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">array</span><span style="color: #000000;">"</span><span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">返回一個(gè)array</span><span style="color: #008000;"><br/></span><span style="color: #000000;"> <br/> </span><span style="color: #0000ff;">return</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcresp(</span><span style="color: #800080;">$msg</span><span style="color: #000000;">);<br/>}<br/><br/></span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpc_server(<br/> </span><span style="color: #0000ff;">array</span><span style="color: #000000;">(<br/> </span><span style="color: #000000;">"</span><span style="color: #000000;">example.test</span><span style="color: #000000;">"</span><span style="color: #000000;">=></span><span style="color: #0000ff;">array</span><span style="color: #000000;">(</span><span style="color: #000000;">"</span><span style="color: #000000;">function</span><span style="color: #000000;">"</span><span style="color: #000000;">=></span><span style="color: #000000;">"</span><span style="color: #000000;">foo</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;"><br/> )<br/>);<br/></span><span style="color: #000000;">?></span>
<span style="color: #000000;"><?</span><span style="color: #000000;">php <br/></span><span style="color: #0000ff;">include</span><span style="color: #000000;">'</span><span style="color: #000000;">./lib/xmlrpc.inc</span><span style="color: #000000;">'</span><span style="color: #000000;">;<br/></span><span style="color: #800080;">$params</span><span style="color: #000000;">=</span><span style="color: #0000ff;">array</span><span style="color: #000000;">(<br/> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">"</span><span style="color: #000000;">hello rpc</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">string</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;"><br/> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">123</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">int</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;"><br/> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval( <br/> </span><span style="color: #0000ff;">array</span><span style="color: #000000;">(<br/> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">"</span><span style="color: #000000;">test</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">string</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;"><br/> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcval(</span><span style="color: #000000;">456</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">int</span><span style="color: #000000;">"</span><span style="color: #000000;">)<br/> )</span><span style="color: #000000;">,</span><span style="color: #000000;"><br/> </span><span style="color: #000000;">"</span><span style="color: #000000;">array</span><span style="color: #000000;">"</span><span style="color: #000000;">)</span><span style="color: #000000;">,</span><span style="color: #000000;"><br/>);<br/><br/></span><span style="color: #800080;">$message</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpcmsg(</span><span style="color: #000000;">"</span><span style="color: #000000;">example.test</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #800080;">$params</span><span style="color: #000000;">);<br/></span><span style="color: #800080;">$client</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;"> xmlrpc_client(</span><span style="color: #000000;">"</span><span style="color: #000000;">/interface.php</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">my.rpcserver.com</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">'</span><span style="color: #000000;">80</span><span style="color: #000000;">'</span><span style="color: #000000;">);<br/></span><span style="color: #008000;">//</span><span style="color: #008000;">$client->setDebug(2);</span><span style="color: #008000;"><br/></span><span style="color: #800080;">$res</span><span style="color: #000000;">=</span><span style="color: #800080;">$client</span><span style="color: #000000;">-></span><span style="color: #000000;">send(</span><span style="color: #800080;">$message</span><span style="color: #000000;">,</span><span style="color: #000000;">30</span><span style="color: #000000;">);<br/><br/></span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #800080;">$res</span><span style="color: #000000;">-></span><span style="color: #000000;">faultCode()){<br/> </span><span style="color: #800080;">$v</span><span style="color: #000000;">=</span><span style="color: #800080;">$res</span><span style="color: #000000;">-></span><span style="color: #000000;">value();<br/> </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #800080;">$i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">; </span><span style="color: #800080;">$i</span><span style="color: #000000;"><</span><span style="color: #800080;">$v</span><span style="color: #000000;">-></span><span style="color: #000000;">arraySize(); </span><span style="color: #800080;">$i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br/> </span><span style="color: #800080;">$vv</span><span style="color: #000000;">=</span><span style="color: #800080;">$v</span><span style="color: #000000;">-></span><span style="color: #000000;">arrayMem(</span><span style="color: #800080;">$i</span><span style="color: #000000;">);<br/> </span><span style="color: #0000ff;">echo</span><span style="color: #800080;">$vv</span><span style="color: #000000;">-></span><span style="color: #000000;">scalarVal()</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;"><br/></span><span style="color: #000000;">"</span><span style="color: #000000;">;<br/> }<br/>}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br/> </span><span style="color: #0000ff;">echo</span><span style="color: #800080;">$res</span><span style="color: #000000;">-></span><span style="color: #000000;">faultcode()</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;">:</span><span style="color: #000000;">"</span><span style="color: #000000;">.</span><span style="color: #800080;">$res</span><span style="color: #000000;">-></span><span style="color: #000000;">faultString()</span><span style="color: #000000;">.</span><span style="color: #000000;">"</span><span style="color: #000000;"><br/></span><span style="color: #000000;">"</span><span style="color: #000000;">;<br/>}<br/></span><span style="color: #000000;">?></span>

ホットAIツール

Undress AI Tool
脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress
リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover
寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版
中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1
強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6
ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

settings.jsonファイルは、ユーザーレベルまたはワークスペースレベルのパスにあり、VSCODE設(shè)定のカスタマイズに使用されます。 1。ユーザーレベルのパス:WindowsはC:\ users \\ appdata \ roaming \ code \ user \ settings.json、macos is/users //settings.json、linux is /home/.config/code/user/settings.json; 2。Workspace-Level Path:.vscode/settings Project Root Directoryの設(shè)定

readonlypropertiesinphp8.2canonlybeassignedonedonedontheconstructoraturatiddeclaration andcannotBemodifiedifiedifiedifiedifiedifiedifiedifiadtivedabilityattthelanguagelele.2.

パフォーマンス分析ツールを使用してボトルネックを見(jiàn)つけ、開(kāi)発とテスト段階でVisualVMまたはJProfilerを使用し、生産環(huán)境で非同期財(cái)産を優(yōu)先します。 2。オブジェクトの作成を削減し、オブジェクトを再利用し、StringBuilderを使用して文字列のスプライシングを置き換え、適切なGC戦略を選択します。 3.コレクションの使用を最適化し、シーンに応じて初期容量を選択し、プリセットします。 4.同時(shí)性を最適化し、同時(shí)コレクションを使用し、ロックの粒度を低減し、スレッドプールを合理的に設(shè)定します。 5. JVMパラメーターを調(diào)整し、合理的なヒープサイズと低遅延のゴミコレクターを設(shè)定し、GCログを有効にします。 6.コードレベルでの反射を避け、ラッパークラスを基本タイプに置き換え、初期化を遅延させ、最終と靜的を使用します。 7。JMHと組み合わせた連続性能テストと監(jiān)視

itertools.combinationsは、反復(fù)可能なオブジェクトから指定された數(shù)の要素を選択するすべての非反復(fù)的な組み合わせ(無(wú)関係な順序)を生成するために使用されます。その使用には、次のものが含まれます。1。繰り返しの順序を避けるために、( 'a'、 'b')、 'a'、 'c')など、リストから2つの要素の組み合わせを選択します。 2?!窤BC」や「ABD」などの文字列の3文字の組み合わせを取り、サブシーケンス生成に適しています。 3。2つの數(shù)値の合計(jì)が1 5 = 6などのターゲット値に等しい組み合わせを見(jiàn)つけ、ダブルループロジックを簡(jiǎn)素化します。組み合わせと配置の違いは、順序が重要かどうかにあります。組み合わせはABとBAを同じと見(jiàn)なし、順列は異なると見(jiàn)なされます。

Pythonは、ETLプロセスを?qū)g裝するための効率的なツールです。 1。データ抽出:データベース、API、ファイル、およびその他のソースからデータを抽出できます。Pandas、Sqlalchemy、Requests、その他のライブラリを介して。 2。データ変換:パンダを使用して、クリーニング、タイプ変換、関連性、集約、その他の操作を使用して、データの品質(zhì)を確保し、パフォーマンスを最適化します。 3。データの読み込み:PandasのTO_SQLメソッドまたはクラウドプラットフォームSDKを使用して、ターゲットシステムにデータを書(shū)き込み、書(shū)き込み方法とバッチ処理に注意してください。 4。ツールの推奨事項(xiàng):気流、ダグスター、長(zhǎng)官は、ログアラームと仮想環(huán)境を組み合わせて、安定性と保守性を向上させるために、プロセスのスケジューリングと管理に使用されます。

フィクスチャは、テスト用のプリセット環(huán)境またはデータを提供するために使用される関數(shù)です。 1. @pytest.fixtureデコレータを使用して、フィクスチャを定義します。 2。テスト関數(shù)にパラメーター形式にフィクスチャを注入します。 3。降伏前にセットアップを?qū)g行してから斷片を?qū)g行します。 4。関數(shù)、モジュールなどのスコープパラメーターを介して範(fàn)囲を制御します。 5.共有フィクスチャをconftest.pyに配置して、クロスファイル共有を達(dá)成し、それによってテストの保守性と再利用性を改善します。

useguzzleforrobustttprequestswithheadersandtimeouts.2.parsehtmleffitywithsymfonydomddomedrawlerusingssseLectors.3.handlejavascript-heavysitesbyintegratingpuppeteerviaphpexec()torenderpages.4.respectrobots.txt、rotedelays.txt、adddelays.txt、adddelays.txt、

chromecanopenlocalfileslikehtmlandpdfsbyusing "openfile" ordraggingthemintotheblowser;
