> 백엔드 개발 > PHP 튜토리얼 > PHP에서 이동하기 위해 점프 : 신성 모독, 브라바도 또는 상식?

PHP에서 이동하기 위해 점프 : 신성 모독, 브라바도 또는 상식?

Joseph Gordon-Levitt
풀어 주다: 2025-02-10 11:51:24
원래의
266명이 탐색했습니다.

Jumping from PHP to Go: Blasphemy, Bravado or Common Sense?

코어 포인트

PHP에서 Boxzilla 애플리케이션의 기본 Laravel 애플리케이션은 처음에는 비즈니스 위험에도 불구하고 더 나은 성능, 더 쉬운 배포 및 더 높은 테스트 범위를 갖춘보다 효율적인 프로그램으로 끝납니다.

GO는 PHP보다 더 나은 표준 라이브러리가있는 컴파일 된 언어이며 외부 종속성을 고려하더라도 코드 줄이 적은 더 빠르고 작은 응용 프로그램을 생성 할 수 있습니다. PHP에서 GO 로의 전환은 새로운 구문 및 기능에 적응해야하지만 최종 결과는 가치가있는 것으로 간주됩니다.
    PHP의 대규모 커뮤니티와 풍부한 자원에도 불구하고 Go의 인기, 단순성 및 우수한 성능 기능은 개발자가 전환을 고려할 수있는 강력한 경쟁자가됩니다. 저자는 미래에 많은 개발자들이 PHP, Python 및 JavaScript와 같은 동적으로 입력 한 언어에서 마이그레이션 할 것이라고 예측합니다.
  • PHP To Go의 마이그레이션에 관한이 기사는 원래 다른 곳에서 출판되었으며 저자의 허가를 받아 여기에서 재현되었습니다.
올해 초, 나는 아마도 나쁜 사업 결정을 내렸다.

그러나 후회하지 않습니다.

단 몇 주 후에 GO 앱을 배포했습니다. 몇 달 만에 가장 행복한 시간이었고, 나는 많은 것을 배웠고, 더 나은 성능, 더 쉬운 배포, 더 높은 테스트 범위와 같은 오래된 응용 프로그램보다 큰 개선으로 끝났습니다.
응용 프로그램은 상당히 간단한 데이터베이스 중심 API 및 사용자가 로그인하여 제품을 다운로드하거나 송장을 보거나 결제 방법을 업데이트 할 수있는 계정 영역입니다.

Stripe와 Braintree는 구독 지불을 수락하는 데 사용됩니다. 송장은 MoneyBird를 사용하여 처리되며 일부 거래 이메일은 MailGun을 사용하여 전송됩니다. Jumping from PHP to Go: Blasphemy, Bravado or Common Sense? 라 라벨은 충분히 잘 작동하지만, 나는 항상 어떤 것들이 너무 복잡하다고 생각합니다. 그리고 몇 달마다 새로운 "메인"버전이 출시되는 것은 어떻게됩니까? 최신 버전에 상당한 개선이 포함되어 있다면 기뻐할 것입니다. 그러나 제 생각에는 이름과 디렉토리 구조에 약간의 변경 사항이 있습니다.

> 왜 선택해야합니까?

작년에 나는 여러 서비스를 옮겼으므로 언어에 완전히 익숙하지 않았습니다. WordPress 기반 제품을 판매하는 개발자로서 내 작업의 일부는 최종 사용자에게 중점을 둔 오래된 기술 스택을 처리하는 것입니다.

내가 자영업하지 않았다면,이“섹시한”기술이 부족한 것을 보충하기 위해 새로운 직업을 신청할 것입니다. 내 상사로서, 더 직접적인 혜택을 추구하는 것이 아니라 매일의 일을 재미있게 만드는 것은 저의 책임입니다. 소득이 허용되는 경우 (그리고), 왜 재미가 없습니까?

Go Code 작성은 놀라운 도구, 빠른 개발뿐만 아니라 최종 결과는 일반적으로 매우 빠릅니다. Go 프로젝트의 목적을 읽는 것만으로 도이 언어와 사랑에 빠졌습니다.

앞으로 몇 년 동안 우리는 PHP, Python 및 JavaScript와 같은 동적으로 타이핑 된 언어에서 꽤 많은 사람들이 이동할 것이라고 생각합니다.

코드 라이브러리 마이그레이션 golang으로 코드를 마이그레이션하는 데 주로 데이터베이스 상호 작용을 올바르게 수행하고 블레이드 템플릿을 이동 중에 사용할 수있는 것으로 포팅하는 것이 포함됩니다.

orm은 항상 나에게 방해가되므로 시뮬레이션 가능한 데이터 액세스 계층과 일반 SQL 쿼리를 선택했습니다. Meddler는 쿼리 결과를 구조로 스캔하는 일부 보일러 플레이트 코드를 제거하는 데 사용됩니다.

계층 템플릿과 부분 템플릿을 지원하기 위해 Go의 표준 HTML/템플릿 패키지 주변의 작은 래퍼 인 오픈 소스 그린 너. 이를 통해 동일한 계층 구조와 부분 템플릿을 사용할 수 있으므로 블레이드 템플릿 파일을 비교적 쉽게 이동할 수 있습니다.

Stripe와의 통합을 위해 공식 Stripe-Go 패키지가 있습니다. Braintree의 경우, 한동안 간과되었지만 최근에 새로운 관심을 받았던 비공식 Braintree-Go 패키지가 있습니다. MoneyBird에서 송장을 관리하기위한 GO 패키지가 없기 때문에 MoneyBird-Go를 구축하고 오픈했습니다.

사과와 오렌지를 비교하십시오 Go는 편집 된 언어이며 표준 라이브러리는 PHP보다 훨씬 낫습니다. 제가해야 할 두 가지 언어를 비교하는 것은 불공평합니다. 즉, 나는 몇 가지 숫자를 공유하는 것이 재미있을 것이라고 생각합니다.

성능 wrk는 두 응용 프로그램에서 간단한 HTTP 벤치 마크를 수행하는 데 사용되며 로그인 페이지의 경우 HTML을 반환합니다.

동시 번호

평균 지연

요청/초

전송/초

라 라벨 1 261.48 1.27mb LARAVEL 100 108.86ms

917.27 go 1 325.72μs 34.27MB go 11.63ms 19967.31 go 37.68ms 22653.22 105.41mb 불행히도, 동시 "사용자"의 수를 100 개 이상으로 늘리면 Laravel 애플리케이션 (또는 PHP-FPM 소켓)이 계속 충돌합니다.

netData는 서버가 그러한 부하를 견딜 수있는 방법을 확인하기 위해 다음 차트를 제공합니다.

Go Language, 동시 연결의 수는 100

입니다. laravel, 동시 연결의 수는 100

입니다 는 응용 프로그램이 실행되는 것과 동일한 컴퓨터에서 벤치 마크를 실행하므로 두 차트에 심각한 영향을 미칩니다. Jumping from PHP to Go: Blasphemy, Bravado or Common Sense? 코드 줄 수 모든 공급 업체 종속성을 포함하여 두 응용 프로그램의 코드 줄 수를 비교해 봅시다.

라벨 버전에는 156,000 줄 이상의 코드가 포함되어 있습니다. 여기에는 개발 종속성이 포함되어 있지 않으며, Laravel은 테스트 등을 실행하는 데 필요한 개발 의존성이 포함되지 않습니다. Jumping from PHP to Go: Blasphemy, Bravado or Common Sense?

반면에 골란 버전에는 33,000 줄의 코드가 포함되어 있습니다. 이것은 동일한 함수 코드의 5 분의 1에 불과합니다.

Laravel 애플리케이션에서 외부 종속성을 제외하여 실제로 쓴 코드의 수를 알 수 있습니다.

golang의 경우.

관리 된 코드 라인의 수만 보면 결과가 더 균형을 이룹니다. 그럼에도 불구하고, 그것은 동일한 기능이 동일한 코드의 코드를 가진 응용 프로그램입니다.

테스트 범위 Golang에서 테스트는 일류 시민이며 테스트 파일은 실제 소스 파일 옆에 있습니다.
<code>find . -name '*.php' | xargs wc -l
156289 total
</code>
로그인 후 복사

이것은 응용 프로그램 테스트 중심 개발을 매우 편리하게 만듭니다.

Laravel 애플리케이션에서는 주로 요청 핸들러가 올바른 응답을 반환하는지 확인하기 위해 통합 테스트를 수행합니다. 전체 테스트 커버리지는 주로 단단한 커플 링으로 인해 매우 낮으며, 이는 주로 내 잘못입니다. 두 번째로 같은 앱을 작성하면 여기서 도움이됩니다.
<code>find . -name '*.go' | xargs wc -l
33624 total
</code>
로그인 후 복사
tldr 나는 당신이하지 말아야 할 일을했습니다. 나는 그런 느낌이 들기 때문에 다른 언어로 앱을 다시 작성했습니다. 결과는 작고 빠른 앱과 많은 재미가 있습니다.

PHP에서 이동으로 이동하는 것에 대한 질문이 자주 묻습니다

PHP와 GO의 주요 차이점은 무엇입니까?

PHP와 GO는 모두 강력한 프로그래밍 언어이지만 몇 가지 주요 차이점이 있습니다. PHP는 주로 웹 개발에 사용되는 스크립팅 언어이며 GO는 효율성과 단순성을 향상시키기 위해 설계된 정적으로 입력 한 컴파일 된 언어입니다. GO는 속도와 메모리 사용에서 탁월한 성능을 제공하며 단순성과 강한 타이핑 특성으로 인해 유지하기가 더 쉽습니다. 그러나 PHP는 더 큰 커뮤니티와 더 많은 자원을 보유하고있어 학습과 사용을보다 쉽게 ​​사용할 수 있습니다.

왜 PHP에서 이동으로 이동하는 것을 고려해야합니까?

PHP에서 이동하는 것을 고려해야 할 몇 가지 이유가 있습니다. GO는 탁월한 성능을 제공하며, 이는 고속과 효율이 필요한 응용 프로그램에 중요합니다. 또한 더 간단하고 직접적으로 코드를 더 쉽게 유지 관리 할 수 ​​있습니다. 또한 GO는 동시 프로그래밍을 강력하게 지원하며 일부 유형의 애플리케이션에 큰 이점이 될 수 있습니다.

PHP에서 이동하기 위해 마이그레이션하는 것이 얼마나 어려운가요?

PHP에서 GO로 마이그레이션하는 데 어려움은 프로그래밍 개념에 대한 친숙 함과 새로운 언어를 배우려는 의지에 따라 다릅니다. Go의 디자인은 간단하고 이해하기 쉽지만 적응하는 데 시간이 걸리는 몇 가지 독특한 기능이 있습니다. 그러나 약간의 노력과 실습으로 대부분의 개발자는 전환을 완료 할 수 있어야합니다.

어떤 리소스가 내가 배우는 데 도움이 될 수 있습니까?

GO를 배우는 데 도움이되는 자원이 많이 있습니다. 공식 GO 웹 사이트는 포괄적 인 자습서와 문서를 제공하며 많은 온라인 과정과 자습서가 있습니다. 또한 Go 커뮤니티는 적극적이고 지원 적이며 질문을하고 도움을받을 수있는 많은 포럼 및 토론 그룹이 있습니다.

PHP와 마찬가지로 웹 개발을 위해 이동할 수 있습니까?

예, 웹 개발을 위해 이동할 수 있습니다. Go에는 웹 애플리케이션을 쉽게 구축 할 수있는 Net/HTTP 패키지가 내장되어 있으며 GO에 사용할 수있는 몇 가지 웹 프레임 워크가 있습니다. 그러나 GO는 일반적인 언어이므로 PHP와 같은 웹 개발에 구체적으로 사용되지 않습니다.

GO는 PHP에 비해 동시성을 어떻게 처리합니까?

GO는 PHP에 대한 주요 장점 중 하나 인 동시 프로그래밍을 강력하게 지원합니다. Go의 Goroutine 및 채널을 사용하면 동시 코드를 쉽게 작성할 수 있으며 언어 설계는이 코드의 효율성과 보안을 보장합니다. 대조적으로, PHP는 다른 도구와 라이브러리를 사용하여 구현할 수 있지만 동시성 지원이 내장되어 있지 않습니다.

PHP와 GO의 성능 차이는 무엇입니까?

GO는 일반적으로 PHP보다 더 나은 성능을 제공합니다. 컴파일 된 언어이므로 기계의 하드웨어에서 직접 실행되므로 실행 시간이 줄어 듭니다. GO에는보다 효율적인 메모리 관리 시스템이있어 메모리 사용량을 줄일 수 있습니다. 그러나 작고 간단한 응용 프로그램의 경우 성능 차이가 분명하지 않을 수 있습니다.

크고 복잡한 프로젝트에 적합합니까?

예, GO는 크고 복잡한 프로젝트에 적합합니다. 단순성과 강력한 유형의 기능을 사용하면 대형 코드베이스를 쉽게 유지할 수 있으며 성능 기능은 고 부하 애플리케이션에 적합합니다. 또한, 동시 프로그래밍에 대한 Go의 지원은 높은 수준의 병렬 처리가 필요한 프로젝트의 주요 이점이 될 수 있습니다.

Go의 커뮤니티와 생태계는 PHP와 어떻게 비교됩니까?

PHP는 더 큰 커뮤니티와 더 많은 자원을 보유하고있어 학습과 사용을보다 쉽게 ​​사용할 수 있습니다. 그러나 Go 커뮤니티는 빠르게 성장하고 있으며 이미 많은 라이브러리와 도구가 있습니다. 또한 GO의 단순성과 성능 특성은 많은 기술 회사들 사이에서 인기를 얻게되며, 이는 증가하는 생태계에도 기여합니다.

PHP에서 이동할 때 어떤 과제가 발생할 수 있습니까?

새로운 구문 학습 및 프로그래밍 패러다임 학습, Goroutines 및 채널과 같은 고유 한 기능에 적응하고 필요에 맞는 라이브러리와 도구를 찾는 등 PHP에서 이동할 때 몇 가지 어려움이있을 수 있습니다. 그러나 이러한 도전은 약간의 노력과 올바른 자원으로 극복 될 수 있습니다.

위 내용은 PHP에서 이동하기 위해 점프 : 신성 모독, 브라바도 또는 상식?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿