コアポイント
PHPからGoへの移行に関するこの記事は、もともと他の場所で公開され、著者の許可を得てここで再現されました。
しかし、私はそれを後悔していません。
アプリケーションは、ユーザーがログインして製品をダウンロードしたり、請求書を表示したり、支払い方法を更新したりできるかなりシンプルなデータベース駆動型APIおよびアカウントエリアです。
StripeとBraintreeは、サブスクリプションの支払いを受け入れるために使用されます。請求書はMoneyBirdを使用して処理され、一部のトランザクションメールはMailGunを使用して送信されます。
Laravelは十分に走っていますが、私は常にいくつかのことが複雑すぎると感じています。そして、数か月ごとにリリースされている新しい「メイン」バージョンで何が起こっているのでしょうか?新しいバージョンに大幅な改善が含まれている場合は幸せですが、私の意見では、多くの場合、名前とディレクトリ構造にいくつかの小さな変更を加えます。
なぜGOを選ぶのですか?
私が自営業者でなければ、この「セクシーな」テクノロジーの欠如を補うために新しい仕事を申請します。私自身の上司として、より多くの直接的な利益を追求するだけでなく、私の毎日の仕事を楽しくすることは私の責任です。収入が許可されている(そしてそうする)場合、なぜ楽しんでみませんか?
Goコードを書くことは、驚くべきツールを備えた快適なものであり、迅速な開発だけでなく、最終結果は通常非常に高速です。 GOプロジェクトの目的を読んで、この言語に恋をしました。
今後数年間で、PHP、Python、JavaScriptなどの動的にタイプされた言語から移動するのはかなりの数の人々が行くと思います。
Golangへのコードの移行には、主にデータベースインタラクションを正しく行い、BladeテンプレートをGOで使用できるものに移植することが含まれます。
ormは常に私の邪魔をするので、シミュレート可能なデータアクセスレイヤーと通常のSQLクエリを選択しました。 Meddlerは、クエリの結果を構造にスキャンするいくつかのボイラープレートコードを削除するために使用されます。
レイヤードテンプレートと部分的なテンプレートをサポートするために、Goの標準HTML/テンプレートパッケージの周りの小さなラッパーであるオープンソースGreenerです。これにより、同じ階層と部分テンプレートを使用できるため、Bladeテンプレートファイルを比較的簡単に移動することができます。Stripeとの統合については、公式のStripe-goパッケージがあります。 Braintreeの場合、しばらく見落とされてきたが、最近新しい注目を集めている非公式のBraintree-Goパッケージがあります。 MoneyBirdで請求書を管理するためのGoパッケージはないので、私はMoneyBird-go-Goを組み立ててオープンしました。
リンゴとオレンジを比較
パフォーマンス
sconrency番号
平均遅延
リクエスト/second
転送/second
残念ながら、「ユーザー」の数を100以上に増やすと、Laravelアプリケーション(またはPHP-FPMソケット)がクラッシュし続けます。
NetDataは、サーバーがそのような負荷に耐える方法を確認するために、次のチャートを提供します。
言語に行くと、同時接続の数は100 laravel、同時接続の数は100 アプリケーションが実行されるのと同じマシンからベンチマークを実行するため、これは両方のチャートに深刻な影響を与えることに注意してください。
コードの行の数
すべてのベンダー依存関係を含む、両方のアプリケーションのコードの行の数を比較しましょう。
一方、Golangバージョンには33,000行のコードが含まれています。これは、同じ関数コードの5分の1です。
<code>find . -name '*.php' | xargs wc -l 156289 total </code>
Laravelアプリケーションの外部依存関係を除外して、実際に書いたコードの行の数を知るようにしましょう。
<code>find . -name '*.go' | xargs wc -l 33624 total </code>
コードの管理行列の数のみを表示する場合、結果はよりバランスが取れます。それでも、それは同じ機能を備えたアプリケーションであり、コードの量が半分です。
<code>find . -name '*.php' -not -path "./vendor/*" | xargs wc -l 13921 total </code>
Golangでは、テストは一流の市民であり、テストファイルは実際のソースファイルの横にあります。
<code>find . -name '*.go' -not -path "./vendor/*" | xargs wc -l 6750 total </code>
これにより、アプリケーションテスト駆動型開発が非常に便利になります。
tldr
<code>license.go license_test.go subscription.go subscription_test.go</code>
PHPからGO
への移行に関するよくある質問
PHPとGOの主な違いは何ですか?PHPからGOに移行することを検討する理由はいくつかあります。 GOは優れたパフォーマンスを提供します。これは、高速と効率を必要とするアプリケーションにとって重要です。また、よりシンプルで直接的であり、コードを維持しやすくすることができます。さらに、GOは同時プログラミングを強くサポートしています。これは、一部のタイプのアプリケーションにとって大きな利点になる可能性があります。
PHPから移行することの難しさは、プログラミングの概念に精通していることと、新しい言語を学ぶ意欲によって異なります。 Goのデザインはシンプルで理解しやすいですが、適応するのに時間がかかるユニークな機能がいくつかあります。ただし、ある程度の努力と実践により、ほとんどの開発者は変換を完了できるはずです。
あなたが行くことを学ぶのに役立つ多くのリソースがあります。公式GO Webサイトには包括的なチュートリアルとドキュメントが提供されており、利用可能なオンラインコースとチュートリアルがたくさんあります。さらに、GOコミュニティは積極的で協力的であり、質問をして助けを得ることができる多くのフォーラムやディスカッショングループがあります。
はい、Web開発にはGoを使用できます。 GOには、Webアプリケーションを簡単に構築できるようにするネット/HTTPパッケージが組み込まれており、GOに利用できるWebフレームワークがいくつかあります。ただし、GOは共通言語であることを忘れないでください。そのため、PHPなどのWeb開発には特別に使用されていません。
Goは、PHPよりも主な利点の1つである同時プログラミングを強くサポートしています。 GoのGoroutineとチャンネルにより、同時コードの書き込みが簡単になり、言語の設計により、このコードの効率とセキュリティが保証されます。対照的に、PHPには組み込みの並行性サポートはありませんが、他のツールやライブラリを使用して実装できます。
GOは通常、PHPよりも優れたパフォーマンスを提供します。これはコンパイルされた言語です。つまり、マシンのハードウェアで直接実行されるため、実行時間が短縮されます。 GOには、より効率的なメモリ管理システムもあり、メモリの使用量を削減できます。ただし、小規模で単純なアプリケーションでは、パフォーマンスの違いは明らかではない場合があることを忘れないでください。
はい、大規模で複雑なプロジェクトに適しています。そのシンプルさと強力なタイプされた機能により、大きなコードベースを維持しやすくなり、パフォーマンス機能により、高負荷アプリケーションに適しています。さらに、同時プログラミングに対するGOのサポートは、高レベルの並列性を必要とするプロジェクトにとって大きな利点になる可能性があります。
PHPには、より大きなコミュニティとより利用可能なリソースがあり、学習と使用を容易にします。ただし、GOコミュニティは急速に成長しており、すでに多くのライブラリとツールが利用可能です。さらに、GOのシンプルさとパフォーマンスの特性により、多くのハイテク企業の間で人気があり、成長する生態系にも貢献しています。
新しい構文やプログラミングパラダイムの学習、ゴロウチンやチャネルなどのGOのユニークな機能に適応し、ニーズに合った適切なライブラリとツールを見つけるなど、PHPからGOに移行する際には、いくつかの課題があるかもしれません。しかし、これらの課題は、ある程度の努力と適切なリソースで克服することができます。
以上がPHPからGOにジャンプする:冒とく、勇敢な、または常識?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。