国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
PHP (-Experience) の異なるバージョン間の cURL の違い、curl の異なるバージョン
環(huán)境判斷: マジックナンバーに注意してください!
明示的に指定された劣化オプションを推奨します
ネームスペース
ホームページ バックエンド開発 PHPチュートリアル PHP の異なるバージョン間の cURL の違い (-Experience)、curl_PHP の異なるバージョンのチュートリアル

PHP の異なるバージョン間の cURL の違い (-Experience)、curl_PHP の異なるバージョンのチュートリアル

Jul 12, 2016 am 08:52 AM
curl php 違う 違い バージョン

PHP (-Experience) の異なるバージョン間の cURL の違い、curl の異なるバージョン

以前、記事の収集と畫像の保存を?qū)g現(xiàn)する?yún)Ъ末`ルを作成していました。記事の內(nèi)容はデータベースに保存されます。そして寫真は最初に畫像サーバーにアップロードしてから、畫像アドレスを返し、記事の畫像アドレスを置き換える必要があります。

ここで問題が発生します。すべてが正常に収集できましたが、ローカル テストは正常で、寫真も正常にアップロードできましたが、本番環(huán)境には寫真がありません。その後、段階的にデバッグしたところ、データが次のとおりであることがわかりました。そこにありますが、寫真が本番環(huán)境に正常にアップロードされなかったのはなぜですか?

數(shù)日間苦労した後、コードを段階的に読み、デバッグし、Baidu を使用した後、ついに答えを見つけました。なんと大きな落とし穴でした。

curl postを使用して畫像サーバーにアップロードします

PHP の cURL は、

を介した POST リクエストをサポートします。 CURL_POSTFIELDS傳遞關(guān)聯(lián)數(shù)組(而不是字符串)來生成multipart/form-data

従來、PHP の cURL は、cURL が読み取りおよびアップロードするための配列データ?jī)?nèi)で「

+完全なファイル パス」の構(gòu)文を使用することにより、ファイルの添付をサポートしていました。これは、コマンド ラインから cURL プログラムを直接呼び出すための構(gòu)文と一致しています: @ リーリー

しかし、PHP は 5.5 以降、ファイルを指すための新しい CURLFile クラスを?qū)毪筏蓼筏俊?CURLFile クラスは、マルチパート/フォームデータ データに表示される MIME タイプ、ファイル名などの追加情報(bào)を詳細(xì)に定義することもできます。 PHP では、古い

構(gòu)文の代わりに CURLFile を使用することをお?jiǎng)幛幛筏蓼? @ リーリー

PHP 5.5 では、PHP の cURL モジュールに古い

構(gòu)文を拒否させ、CURLFile スタイルのファイルのみを受け入れるように強(qiáng)制できる CURL_SAFE_UPLOAD選項(xiàng),可以強(qiáng)制PHP的cURL模塊拒絕舊的@ オプションも導(dǎo)入されています。デフォルト値は、5.5 の場(chǎng)合は false、5.6 の場(chǎng)合は true です。

しかし、落とし穴は次のとおりです: @語法在5.5就已經(jīng)被打了deprecated,在5.6中就直接被刪除了(會(huì)產(chǎn)生 ErorException: The usage of the @filenameこの構(gòu)文は 5.5 で非推奨となり、5.6 では直接削除されました (ElorException が生成されます: ファイルのアップロードに対する @filename API の使用は非推奨です。使用してください)代わりに CURLFile クラスを使用します)。

PHP 5.6 以降の場(chǎng)合、CURL_SAFE_UPLOAD を false に手動(dòng)で設(shè)定することは 無意味です。これは、文字通り「false に設(shè)定すると安全でない古いメソッドが有効になる」とは理解されていません。古いメソッドは廃止された構(gòu)文として完全に存在しなくなりました。 PHP 5.6+ == CURLFile のみ?;孟毪虮Г胜い扦坤丹?。

私のデプロイメント環(huán)境は 5.4 (@Syntax のみ) ですが、私の開発環(huán)境は 5.6 (CURLFile のみ) です。どちらも、両方がサポートする移行バージョンである 5.5 には焦點(diǎn)を當(dāng)てていないため、環(huán)境判斷を備えた 2 セットのコードを作成する必要があります。

ここで問題が起こります...

環(huán)境判斷: マジックナンバーに注意してください!

この種の環(huán)境判定コードを見たことがあります:

リーリー

この種のコードを評(píng)価するには、クソという一言しかありません。

この判斷は、典型的な マジックナンバーの罠に陥ります。コード內(nèi)にバージョン番號(hào)が不可解に表示されるため、PHP マニュアルや更新履歴を長(zhǎng)時(shí)間確認(rèn)しないと、作成者がどの機(jī)能変更に引っかかっているのかを理解するのは困難です。

コードはそのルーツに戻る必要があります。実際のニーズは、従來の @ 構(gòu)文に戻らずに、最初に CURLFile を使用することです。コードは次のとおりです:

リーリー

明示的に指定された劣化オプションを推奨します

信頼性の高い観點(diǎn)から、古い CURL_SAFE_UPLOAD的值,明確告知php是容忍還是禁止舊的@語法。注意在低版本PHP中CURLOPT_SAFE_UPLOAD 構(gòu)文を許容するか禁止するかを PHP に明確に伝えるために

の値を指定することをお?jiǎng)幛幛筏蓼埂?PHP の以前のバージョンでは、CURLOPT_SAFE_UPLOAD 定數(shù)自體が存在しない可能性があるため、以下を判斷する必要があることに注意してください:

リーリー

cURLオプション設(shè)定の順番

curl_setopt()單發(fā)還是curl_setopt_array()バッチに関係なく、cURL のオプションは常に 1 つずつ有効になり、設(shè)定されたオプションは後続のオプションを設(shè)定するときに cURL の動(dòng)作にすぐに影響します。

たとえば CURLOPT_SAFE_UPLOAD就和CURLOPT_POSTFIELDS的行為有關(guān)。如果先設(shè)置CURLOPT_POSTFIELDS再設(shè)置CURLOPT_SAFE_UPLOAD の場(chǎng)合、後者の制約は有効になりません。なぜなら、前者を設(shè)定すると、cURL はデータの実際の読み取りと処理をすでに完了しているからです。

CURL にはこの落とし穴があるオプションがいくつかあるので注意してください。幸いなことに、この種の「依存関係」には選択肢は多くなく、仕組みも複雑ではないため、簡(jiǎn)単に扱うことができます。私の方法は、最初にすべてのオプションをバッチ設(shè)定してから curl_exec()的前一刻才用curl_setopt()單發(fā)設(shè)置CURLOPT_POSTFIELDS まで待つことです。

実際、curl_setopt_array() で使用される配列では、後ろの CURLOPT_POSTFIELDS の位置も信頼できることが保証されています。 curl_setopt_array()用的數(shù)組中,保證CURLOPT_POSTFIELDS的位置在后邊也是可靠的。PHP的關(guān)聯(lián)數(shù)組是有順序保障的,我們也可以假設(shè)curl_setopt_array()內(nèi)部的執(zhí)行順序一定是從頭到尾按順序[注A]PHP の連想配列は順序が保証されています

、また、curl_setopt_array() の內(nèi)部実行順序は、[Note A] の最初から最後まで順番である必要があると仮定することもできます。安心してご利用いただけます。

私のアプローチは、コードのパフォーマンスにさらなる保険を追加し、將來の不正行為を防ぐための順序の重要性を強(qiáng)調(diào)することです。 ??

ネームスペース

PHP バージョン 5.2 以下には名前空間がありません。コード內(nèi)でスペース區(qū)切り文字 が使用されている場(chǎng)合、パーサー エラーが発生します。 PHP 5.2 を扱うのは実際には簡(jiǎn)単で、名前空間を放棄するだけです。

注意する必要があるのは、名前空間を備えた PHP 5.3 以降です。 CURLFile を呼び出す場(chǎng)合でも、class_exists()判斷CURLFile的存在性,都推薦寫成CURLFile でトップレベルのスペースを明示的に指定する場(chǎng)合でも、名前空間でラップされたときにコードがクラッシュするのを防ぎます。

さて、この穴はかなり深いので、飛び出したらシェアします

(上記の解決策はウェブサイトから転載したものです。記事を見つけてくれてありがとう!)

www.bkjia.com本當(dāng)http://www.bkjia.com/PHPjc/1126175.html技術(shù)記事 PHP のバージョン間での cURL の違い (-Experience)、curl のバージョンの違い 収集した記事や畫像を保存する?yún)Ъ末`ルを作成しました。記事の內(nèi)容はデータベースに保存されます...
。
このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國(guó)語版

SublimeText3 中國(guó)語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

ランプスタックを超えて:現(xiàn)代のエンタープライズアーキテクチャにおけるPHPの役割 ランプスタックを超えて:現(xiàn)代のエンタープライズアーキテクチャにおけるPHPの役割 Jul 27, 2025 am 04:31 AM

phpisStillRelevantinModernenterpriseenvironments.1.modernphp(7.xand8.x)は、パフォーマンスゲイン、stricttyping、jit compilation、andmodernsyntaxを提供し、scaleApplications.2.phpintegrateSeffeCtiveTiveliveTiveliveTiveliveTiveTiveTiveliveTiveStures、

PHPでのオブジェクトリレーショナルマッピング(ORM)パフォーマンスチューニング PHPでのオブジェクトリレーショナルマッピング(ORM)パフォーマンスチューニング Jul 29, 2025 am 05:00 AM

n 1クエリの問題を避け、関連するデータを事前にロードすることにより、データベースクエリの數(shù)を減らします。 2.必要なフィールドのみを選択して、メモリと帯域幅を保存するために完全なエンティティをロードしないようにします。 3. DoctrineのセカンダリキャッシュやRedis Cacheの高周波クエリ結(jié)果など、キャッシュ戦略を合理的に使用します。 4.エンティティのライフサイクルを最適化し、クリア()を定期的に呼び出してメモリを解放してメモリオーバーフローを防ぎます。 5.データベースインデックスが存在し、生成されたSQLステートメントを分析して、非効率的なクエリを避けます。 6.変更が不要なシナリオで自動(dòng)変更追跡を無効にし、パフォーマンスを改善するためにアレイまたは軽量モードを使用します。 ORMを正しく使用するには、SQLモニタリング、キャッシュ、バッチ処理、適切な最適化を組み合わせて、開発効率を維持しながらアプリケーションのパフォーマンスを確保する必要があります。

PHPとrabbitmqを使用した回復(fù)力のあるマイクロサービスを構(gòu)築します PHPとrabbitmqを使用した回復(fù)力のあるマイクロサービスを構(gòu)築します Jul 27, 2025 am 04:32 AM

柔軟なPHPマイクロサービスを構(gòu)築するには、RabbitMQを使用して非同期通信を?qū)g現(xiàn)する必要があります。 2。信頼性を確保するために、永続的なキュー、永続的なメッセージ、リリース確認(rèn)、手動(dòng)ACKを構(gòu)成します。 3.指數(shù)バックオフ再試行、TTL、およびデッドレターキューセキュリティ処理の障害を使用します。 4.監(jiān)督などのツールを使用して、消費(fèi)者プロセスを保護(hù)し、ハートビートメカニズムを有効にしてサービスの健康を確保します。そして最終的に、システムが障害で継続的に動(dòng)作する能力を?qū)g現(xiàn)します。

PHP用の生産対応Docker環(huán)境の作成 PHP用の生産対応Docker環(huán)境の作成 Jul 27, 2025 am 04:32 AM

正しいPHP Basicイメージを使用し、安全で最適化されたDocker環(huán)境を構(gòu)成することが、生産を?qū)g現(xiàn)するための鍵です。 1.攻撃面を減らしてパフォーマンスを向上させるための基本畫像としてPHP:8.3-fpm-alpineを選択します。 2.カスタムPHP.iniを介して危険な機(jī)能を無効にし、エラーディスプレイをオフにし、OpCacheとJITを有効にしてセキュリティとパフォーマンスを強(qiáng)化します。 3. NGINXを逆プロキシとして使用して、機(jī)密ファイルへのアクセスを制限し、PHPリクエストをPHP-FPMに正しく転送します。 4.マルチステージ最適化畫像を使用して開発依存関係を削除し、非ルートユーザーを設(shè)定してコンテナを?qū)g行します。 5. CRONなどの複數(shù)のプロセスを管理するためのオプションの監(jiān)督。 6.展開前に機(jī)密情報(bào)漏れがないことを確認(rèn)します

vscode settings.jsonの場(chǎng)所 vscode settings.jsonの場(chǎng)所 Aug 01, 2025 am 06:12 AM

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è)定

PHPの內(nèi)部ガベージコレクションメカニズムに深く潛ります PHPの內(nèi)部ガベージコレクションメカニズムに深く潛ります Jul 28, 2025 am 04:44 AM

PHPのゴミ収集メカニズムは參照カウントに基づいていますが、周期的な円形のゴミコレクターによって円形の參照を処理する必要があります。 1。変數(shù)への參照がない場(chǎng)合、參照カウントはすぐにメモリを解放します。 2.參照參照により、メモリを自動(dòng)的にリリースできなくなり、GCを検出およびクリーニングすることがGCに依存します。 3。GCは、「可能なルート」ZVALがしきい値に到達(dá)するか、GC_COLLECT_CYCLES()を手動(dòng)で呼び出すとトリガーされます。 4.長(zhǎng)期実行PHPアプリケーションは、メモリの漏れを避けるために、gc_status()を監(jiān)視し、gc_collect_cycles()を呼び出す必要があります。 5.ベストプラクティスには、gc_disable()を使用してパフォーマンスキー領(lǐng)域を最適化し、ormのclear()メソッドを介して繰り返しのオブジェクトを最適化する回路參照の回避が含まれます。

サーバーレス革命:BREFを使用してスケーラブルなPHPアプリケーションを展開します サーバーレス革命:BREFを使用してスケーラブルなPHPアプリケーションを展開します Jul 28, 2025 am 04:39 AM

BREFにより、PHP開発者は、サーバーを管理せずにスケーラブルで費(fèi)用対効果の高いアプリケーションを構(gòu)築できます。 1.Brefは、最適化されたPHPランタイムレイヤーを提供し、PHP8.3およびその他のバージョンをサポートし、LaravelやSymfonyなどのフレームワークとシームレスに統(tǒng)合することにより、PHPをAwslambdaにもたらします。 2。展開手順には、次のものが含まれます。Composerを使用してBREFのインストール、httpエンドポイントや職人コマンドなどの関數(shù)とイベントを定義するためにserverless.ymlの構(gòu)成。 3. serverlessdeployコマンドを?qū)g行して、展開を完了し、Apigatewayを自動(dòng)的に構(gòu)成し、アクセスURLを生成します。 4。Lambdaの制限については、Brefは解決策を提供します。

Readonlyプロパティを備えたPHPに不変のオブジェクトを構(gòu)築します Readonlyプロパティを備えたPHPに不変のオブジェクトを構(gòu)築します Jul 30, 2025 am 05:40 AM

readonlypropertiesinphp8.2canonlybeassignedonedonedontheconstructoraturatiddeclaration andcannotBemodifiedifiedifiedifiedifiedifiedifiedifiadtivedabilityattthelanguagelele.2.

See all articles