>  기사  >  백엔드 개발  >  PHP 프로그래머 학습 경로 및 학습 제안의 간단한 버전

PHP 프로그래머 학습 경로 및 학습 제안의 간단한 버전

伊谢尔伦
伊谢尔伦원래의
2017-01-23 13:52:101194검색

여러분이 PHP를 더 잘 배울 수 있도록 이번에는 주로 PHP 학습 경로에 대해 이야기하고, 각 단계에서 PHP 프로그래머에게 필요한 기술 요구 사항을 정리하고, 자신의 상황에 따라 학습 및 성장 목표를 설정하고 싶습니다.

PHP 초보자를 위한 학습 경로 및 제안

단계적인 학습 과정이 필요합니다. 여기에서는 먼저 많은 매니아들이 겪는 PHP 학습 과정을 요약하겠습니다. PHP를 배우세요. 서로 일치합니다.

(1) HTML/CSS/JS 및 웹 페이지의 기본 요소에 익숙하며, 완성 단계에서 간단한 웹 페이지를 스스로 만들 수 있으며 비교적 익숙합니다. 요소 속성

(2) 동적 언어의 개념과 작동 메커니즘을 이해하고, 기본 PHP 구문을 숙지하세요

 (3) PHP와 HTML을 결합하여 간단한 동적 페이지를 완성하는 방법을 알아보세요

 (4) MySQL 접촉 학습, 데이터베이스 설계 시작

(5) 계속해서 PHP 구문 통합, 대부분의 일반적인 PHP 기능 숙지, 객체 지향 프로그래밍 이해, MySQL 최적화, 및 일부 템플릿 및 프레임워크

(6) 마침내 완전한 기능을 갖춘 동적 사이트 완성

초보자는 위의 요약을 보고 PHP를 배우는 것이 매우 간단하다고 생각해서는 안 됩니다. 프로그래밍에는 진지한 사고와 지속적인 연습이 필요합니다. . 다음은 PHP 학습 경로에 대한 자세한 설명입니다. 우선, 모든 웹사이트는 웹페이지로 구성되어 있습니다. 즉, 웹사이트를 완성하려면 먼저 웹페이지 제작을 배워야 합니다. 웹사이트 개발을 배우기 위해서는 먼저 웹페이지 제작 기술을 익히는 것이 필수입니다. 그러므로 앞으로 웹사이트를 만들기 위한 기초를 다지기 위해서는 HTML을 배워야 합니다. HTML은 배우면서 배워야 합니다. HTML의 모든 요소는 어떤 요소가 어떤 영향을 미치는지 이해한 후에만 깊게 기억할 수 있습니다.

이미 정적 페이지를 완성한 후에는 동적 언어를 이해해야 할 때입니다. 많은 사람들이 동적 언어를 처음 접할 때 코드가 직접 출력되지 않고 HTML로 처리되어야 하기 때문에 혼란을 겪을 수 있습니다. HTML 파서. 그리고 PHP도 PHP 파서를 거쳐야 합니다. HTML을 배우는 것과 마찬가지로 파서가 작동하려면 전용 구문 구조를 사용해야 합니다.

PHP를 배우면 운이 좋을 것입니다. 다른 언어를 사용해 본 후에도 PHP가 여전히 상대적으로 단순하다는 것을 알게 될 것입니다. 이 단계에서는 HTML과 PHP의 개념을 이해해야 합니다. 이제 PHP에서 1 더하기 1을 계산하고 이를 숫자에 추가할 수 있습니다. 브라우저에서. 순진하다고 생각하지 마세요. 비록 작은 코드 조각이지만 프로그래밍 여정에서 큰 진전을 이룰 것입니다. 하지만 지금은 아직 초보입니다

다음 단계는 데이터베이스를 배우는 것입니다. MySQL은 PHP의 황금 파트너라고 할 수 있습니다. 데이터베이스의 개념을 이해한 후에는 이 데이터베이스를 정복하고 싶습니다. , PHP를 사용하여 데이터베이스에 연결한 다음 PHP를 사용하여 데이터를 성공적으로 삽입, 삭제 및 업데이트해야 합니다.

이때 다음과 같은 상태일 수 있습니다. HTML을 아시나요? 예, 테이블 레이아웃을 사용하여 여러 웹페이지를 컴파일할 수 있습니다! PHP를 아시나요? 네, 함수에 1+1의 연산을 작성한 후 호출하겠습니다! MySQL을 아시나요? 네, 데이터베이스에 데이터를 삽입하고 삭제할 수 있습니다!

그럼 이제 우리는 무엇을 해야 할까요? 작은 방명록을 만들어 보세요. 이것은 초보자가 직면하는 장애물이기도 합니다. 얼마 후, 드디어 양식 데이터를 데이터베이스에 삽입하고 표시하는 방법을 배웠으니, 프로그램의 프로토타입이 탄생했다고 해야 할까요. 그러나 누군가의 편집 포럼이나 CMS 개발을 보면 언제 작성할 수 있습니까? 걱정하지 마십시오. 지식을 통합하고 PHP 및 MySQL 개발의 필수 사항에 익숙해지십시오. 그런 다음 귀하가 작성한 방명록을 다시 살펴보십시오. 이때 자신이 작성한 방명록을 개선할 수 있습니다. 방명록에는 등록 및 페이징 기능이 있어야 하며, 가능하다면 UI도 강화할 수 있습니다.

이것도 학습으로 간주되나요? NO, NO, NO 아직은 OOP를 접해보지 않으셨죠? 템플릿과 프레임워크는 어떻습니까? 그래도 계속 배워야 해요! PHP 프레임워크는 웹 애플리케이션 구축을 위한 기본 프레임워크를 제공하므로 PHP로 웹 애플리케이션을 작성하는 프로세스를 단순화합니다. 개발 시간을 절약하고 보다 안정적인 애플리케이션을 구축하는 데 도움이 될 수 있습니다. 따라서 PHP 프레임워크는 시간을 절약하고 코드를 향상시키는 데 사용할 수 있는 도구입니다. 처음으로 PHP 프레임워크를 선택하는 경우 여러 가지를 시도해 보는 것이 좋습니다. 각 프레임워크에는 고유한 장점과 단점이 있습니다. 예를 들어 Zend 프레임워크는 다양한 기능과 광범위한 지원으로 인해 오랫동안 인기를 끌었습니다. 체계. 그리고 c++akePHP는 Zend 이후의 PHP 프레임워크이고 해당 지원 시스템은 상대적으로 작지만 더 편리하고 사용하기 쉽습니다

객체지향과 프레임워크를 이해한 후 문의해 보세요 XML을 사용하면 모든 것을 배웠다는 사실을 결코 알 수 없으며 학습에는 끝이 없습니다! 어떤 것을 배울 때, 아무리 많은 기술을 가지고 있어도 노력이 부족하면 아무 소용이 없을 것이라고 생각하지 마십시오. 한 가지 보장할 수 있는 점은 PHP를 배우면 확실히 다른 언어를 빨리 배울 수 있고, 그 반대의 경우도 마찬가지입니다. 이전에 다른 언어를 배운 적이 있다면 확실히 PHP를 빨리 배울 수 있다는 것입니다. 🎜>

다른 사람의 성공적인 코드를 통해 더 많은 것을 배우는 것은 확실히 유익하므로 시간이 지남에 따라 다듬어진 클래식 코드를 보는 것이 발전하는 가장 좋은 방법입니다. 또한, 기술을 배울 때 어려움을 겪고 혼란스러울 수도 있다는 점을 강조해야 하며, PHP를 절반쯤 배웠다가 다시 C#에 대해 생각하게 되거나, 이때 Java가 아주 좋다고 말할 수도 있습니다. 흔들지 말고, 지속하고, 철저하게 배우십시오.

학습 과정을 단계별로 논의해 보겠습니다.

첫 번째 단계: 기본 단계(기본 PHP 프로그래머)

초점: LNMP에 능숙해지기(핵심은 기본 작업 설치 및 구성)

목표: 기본 LNMP 시스템 설치, 간단한 구성 및 유지 관리를 완료할 수 있습니다. 간단한 시스템의 기본 PHP 개발을 수행할 수 있습니다. 중간 규모의 PHP 시스템.

시간: 이 단계를 완료하는 데 필요한 시간은 사람마다 다르며, 일부는 반년보다 빠르게 성장하고 일부는 2~3년 내에 천천히 성장합니다.

1.Linux

기본 명령, 작업, 시작, 기본 서비스 구성(rpm 설치 파일, 다양한 서비스 구성 등 포함)은 간단한 쉘 스크립트 및 awk/sed 스크립트 명령을 작성할 수 있습니다. 기다리다.

2.Nginx

nginx+php를 설치 및 구성할 수 있고, 기본 nginx 핵심 구성 옵션을 알고, server/fastcgi_pass/access_log와 같은 기본 구성을 아는 것이 목표입니다. nginx+php_fpm을 원활하게 작동시킬 수 있습니다.

3.MySQL

mysql을 자체적으로 구축할 수 있고, 기본 mysql 구성 옵션을 알고, innodb와 myisam의 차이점을 알고, InnoDB와 MyISAM의 두 엔진에 대한 다양한 구성 옵션을 알고 있습니다. 두 엔진의 기본 차이점과 선택의 차이점을 알고 MySQL 데이터베이스를 순수하게 직접 컴파일 및 구축하고 정상적으로 안정적으로 실행되도록 인코딩을 구성할 수 있다는 것은 실행 가능한 MySQL 데이터베이스를 구축할 수 있도록 하는 것입니다. .

4.PHP

기본 구문 배열, 문자열, 데이터베이스, XML, 소켓, GD/ImageMgk 이미지 처리 등 MySQL 작업과 연결된 다양한 API(mysql/mysqli/PDO)에 익숙합니다. ), 다양한 코딩 문제를 해결하는 방법을 알고, 일반적으로 사용되는 PHP 프레임워크(ThinkPHP, Zendframework, Yii, Yaf 등)를 알고, 기본 MVC 작동 메커니즘과 이것이 수행되는 이유를 이해하고, 서로 다른 PHP 프레임워크 간의 차이점에 대해 조금 알고 있습니다. PHP 프레임워크 ;MVC 프레임워크를 빠르게 배울 수 있습니다. 개발 프로젝트의 파일 디렉토리 구성을 이해하고 기본적인 좋은 코드 구조와 스타일을 갖추고 소규모 시스템 개발과 중형 시스템에서 특정 모듈 개발을 완료할 수 있어야 합니다.

5. 프론트엔드

시간이 허락한다면 HTML/CSS/JS 및 기타 관련 지식을 배울 수 있고, 웹 표준이 무엇인지 알 수 있으며, div+css 웹/wap 페이지 모드, HTML5를 알 수 있습니다. HTML4와의 차이점, 몇 가지 기본 프런트엔드 및 JS 프레임워크(jQuery 등) 이해, 몇 가지 기본 JavaScript 프로그래밍 지식 이해(이 항목은 필수 항목이 아닙니다. 시간이 있으면 조금 배워도 괜찮습니다. , 그러나 개인적인 관심이 강한 경우를 제외하고는 초점으로 권장되지 않습니다.

6. 시스템 설계

간단한 데이터베이스 설계를 포함해 소규모 시스템의 기본 설계를 완성할 수 있으며, 브라우저->Nginx+PHP -> ; 데이터베이스 아키텍처 설계 개발 작업; 매일 수십만에서 수백만 건의 트래픽이 발생하는 웹사이트의 개발 및 유지 관리 가능

2단계: 개선 단계(중급 PHP 프로그래머)

포커스 : LNMP를 보다 종합적이고 능숙하게 적용할 수 있도록 LNMP 능력을 향상시킵니다.

목표: 언제 어디서나 LNMP 환경을 설정하고 일상적인 구성을 신속하게 완료할 수 있습니다. 발생하는 대부분의 개발 및 온라인 환경 문제를 독립적으로 수행할 수 있습니다. 중형 시스템 개발 작업 대형 시스템에서 중형 모듈 개발 작업을 수행할 수 있습니다.

1. Linux

첫 번째 단계를 기반으로 Shell 스크립트를 사용하여 많은 자동화된 작업을 원활하게 완료할 수 있으며 awk/sed/perl도 잘 작동하며 많은 텍스트를 완료할 수 있습니다. 처리 및 데이터 통계, 기본적으로 대부분의 비특수 Linux 프로그램(MongoDB/Redis/Sphinx/Luncene/SVN 등과 같은 다양한 라이브러리, 패키지, 타사 종속성 등 포함)을 설치할 수 있습니다. , Linux 성능 지표 데이터를 보는 방법, Linux에서 기본적인 문제 추적 방법 등을 알고 있습니다.

2. Nginx

첫 번째 단계를 기반으로 멀티 코어 구성, 이벤트, Proxy_pass, sendfile/tcp_* 구성, 시간 초과 및 기타 관련 구성을 포함하여 더 복잡한 Nginx 구성을 이해합니다. 성능 영향 웹 서버 외에도 nginx는 프록시 서버, 역방향 정적 서버 및 기타 구성을 수행할 수 있습니다. 기본 nginx 구성 조정 방법을 알고 nginx 확장을 nginx 작동에 대해 알고 있습니다. 원칙(마스터/작업자 메커니즘, epoll), nginx 성능이 Apache 성능보다 나은 이유 및 기타 지식을 알아보세요.

3. MySQL/MongoDB

첫 번째 단계를 기반으로 MySQL 개발 측면에서 MySQL 구축 외에도 일반 SQL 최적화(그룹별/순서별/랜드 최적화 등)를 포함한 많은 팁을 익힐 수 있습니다. 또한 innodb/myisam의 성능에 영향을 미치는 구성 옵션(예: key_buffer/query_cache/sort_buffer/innodb_buffer_pool_size /innodb_flush_log_at_trx_commit 등)도 알고 있으며 적절한 값도 알고 있습니다. 이러한 옵션을 구성하기 위해 mysql 마스터-슬레이브 동기 환경을 설정하는 방법, 각 binlog_format 간의 차이점 등 몇 가지 특수 구성 옵션도 알고 있습니다. 또한 기본 인덱스 설정 처리 및 기타 지식을 알고 있으며 기본 MySQL 아키텍처(서버 + 스토리지 엔진)를 원칙적으로 이해하고 기본 InnoDB/MyISAM 인덱스 스토리지 구조 및 차이점(클러스터형 인덱스, B-트리)을 알고 있습니다. 기본 InnoDB 트랜잭션 처리 메커니즘을 이해하고 대부분의 MySQL 예외에 대한 솔루션을 이해합니다(또는 솔루션을 찾을 수 있는 위치를 알고 있습니다). 여건이 허락한다면 NoSQL의 대표격인 MongoDB 데이터베이스에 대해 배우고, MySQL과의 차이점을 비교해 보는 것이 좋습니다. 동료들은 적절한 응용 시나리오에서 MongoDB를 안전하고 신중하게 사용할 수 있으며, PHP와 MongoDB의 기본 결합 개발을 알 수 있습니다. .

4. Redis/Memcached

캐시 처리는 대부분의 중형 시스템에 포함되므로 Memcached와 Redis의 기본 캐시를 이해하고 차이점을 알아야 합니다. Redis/Memcached를 독립적으로 설치할 수 있고, 최대값과 같은 Memcahed의 몇 가지 기본 기능과 제한 사항을 이해하고, PHP를 사용과 결합하는 방법을 알고, Redis의 기본 작동 원리와 사용법을 이해하고, 기존 데이터를 이해합니다. 유형을 파악하고 어떤 시나리오에서 어떤 유형이 사용되는지 알아보세요. 원칙 부분에서는 Memcached의 메모리 구조(슬랩 메커니즘)에 대한 일반적인 이해를 가질 수 있고, redis는 공통 데이터 유형(SDS/연결 목록/SkipList/HashTable) 등의 기본 구현 저장 구조를 이해합니다. Redis의 트랜잭션, RDB, AOF 및 기타 메커니즘에 대해 자세히 알아보세요.

5. PHP

설치 및 구성 측면에서 PHP 및 다양한 타사 확장 기능을 자유롭게 설치할 수 있습니다. php-fpm의 구성 옵션과 의미(예: max_requests/max_children/request_terminate_timeout 및 성능에 영향을 미치는 기타 구성)에 대해 알고 있으며, mod_php/fastcgi의 차이점을 알고 있습니다. PHP(PHP에 대한 객체 지향 지식 포함) 리플렉션과 같은 /SPL/ 구문 수준의 특수 기능에 대한 심층적인 이해가 있어야 합니다. 프레임워크 측면에서 최소한 하나의 기존 PHP MVC 프레임워크 코드를 읽고 기본 PHP 프레임워크의 내부 구현 메커니즘 및 디자인 아이디어는 PHP에서 개발할 수 있었습니다. 애플리케이션 개발을 위한 기존 디자인 패턴(추상 팩토리/단일 케이스/관찰자/명령 체인/전략/어댑터 등)을 능숙하게 사용할 수 있습니다. 개발을 완전히 자유화하고 MVC 패턴을 깊이 이해할 수 있도록 자체 PHP MVC 프레임워크를 개발하는 것이 좋습니다. 또한 비즈니스 프로젝트 개발을 빠르게 업그레이드하고 PHP의 다양한 코드 최적화 방법에 익숙해질 수 있습니다. 대부분의 PHP 보안 문제는 기본 PHP 실행 메커니즘 원칙(Zend 엔진/확장 기본 작업 메커니즘)에 익숙합니다.

6. C/C++

특정 C/C++ 언어를 다루기 시작하고 기본 C/C++ 코드를 작성할 수 있으며 기본 C/C++ 구문(포인터, 배열 연산, 문자 문자열, 일반 표준 API) 및 데이터 구조(연결된 목록, 트리, 해시, 큐)는 Linux에서의 C 언어 개발 개념에 대한 기본 이해가 있고 간단한 makefile 파일을 작성할 수 있으며 간단한 GCC/GDB 프로그램 컴파일 및 간단한 디버깅 작업은 기본 네트워크 프로그래밍에 대한 일반적인 이해를 갖추고 있습니다. (이 항목은 더 높은 수준의 기반을 마련하기 위한 것입니다.)

7. 프론트엔드

첫 번째 단계를 바탕으로 조건이 허용되는 경우 기본 HTTP 프로토콜(프로토콜 코드 200/300/400/500, 기본 HTTP 상호 작용 헤더)을 숙지합니다. , 약간 우아한 HTML+CSS+JavaScript를 심층적으로 작성하거나 조건이 허용하는 경우 일부 프런트 엔드 프레임워크(jQuery/YUI/ExtJS/RequireJS/BootStrap 등)를 간단히 사용할 수 있게 된 후 다음을 수행할 수 있습니다. - 클로저 메커니즘, DOM 처리와 같은 JavaScript 프로그래밍에 대한 심층 연구. 더 깊이 알고 싶다면 jQuery 소스 코드를 읽어 심층 연구할 수 있습니다. (이 항목은 프론트엔드에 관심이 없는 한 핵심 연구는 아닙니다.)

8. 시스템 설계

대부분의 중간 규모 시스템을 위한 웹사이트 아키텍처, 데이터베이스 및 기본 PHP 프레임워크 선택을 설계할 수 있습니다. 다음과 같은 작업을 완료합니다: 브라우저-> CDN(Squid) -> Nginx+PHP -> 수백만 개의 기본 웹사이트 개발 및 유지 관리가 가능한 데이터베이스 구조 개발 및 유지 관리 매일 수천만 건의 트래픽

3단계: 고급 단계(고급 PHP 프로그래머)

핵심: 기본 LNMP 프로그램 외에도 특정 방향이나 분야. (심도 차원 개발)

목표: 기본적인 PHP 비즈니스 개발을 완료할 수 있을 뿐만 아니라 가장 심층적이고 복잡한 기술 문제도 해결할 수 있으며, 중대형 규모의 프로젝트를 독립적으로 설계하고 완료할 수 있습니다. 독립적으로 시스템 설계 및 개발 작업을 수행할 수 있으며 특정 기술 방향에 깊이 관여하고 이 분야에서 상대적으로 전문적입니다. (예를 들어 MySQL, Nginx, PHP, Redis 등 어떤 방향으로든 심층적인 연구)

1. Linux

2단계 기능 외에도 Linux에서의 일반 작업과 성능 모니터링 및 추적 외에도 다양한 고급 및 복잡한 명령을 사용하여 작업을 완료할 수 있습니다(watch/tcpdump/starce/ldd/ar 등). ) 쉘 스크립트 측면에서 저는 백업, 자동화된 처리, 모니터링 등을 포함한 많은 쉘 작업을 완료하는 데 도움이 되는 비교적 복잡한 쉘 스크립트(500줄 이상)를 작성할 수 있었습니다. awk/sed/perl이며 텍스트 통계를 마음대로 제어하고 처리할 수 있습니다. Linux의 내부 메커니즘에 대해 어느 정도 이해하고 있으며, 커널 모듈 로딩, 시작 오류 처리 등도 수행합니다. NFS, 디스크 관리 등과 같은 기타 관련 사항을 이해합니다.

2. Nginx

두 번째 단계를 기반으로 Nginx를 매우 능숙하게 운영할 수 있었습니다. 개인적인 관심 사항에 따라 모니터링, 성능 최적화, 복잡한 문제 해결 등 Nginx에 대한 보다 심층적인 운영 및 유지 관리 작업을 수행합니다. 더 많은 측면에서 Nginx의 작동 원리에 대한 심층적인 연구에 집중하는 것을 고려할 수 있습니다. 주로 특정 마스터/작업자 작업 메커니즘, Nginx 내부 이벤트 처리, 메모리 관리 등과 같은 소스 코드를 읽는 것부터 시작하여 동시에 Nginx 확장 개발을 배우고 일부를 사용자 정의할 수 있습니다. 비공개 확장과 동시에 더 나은 모델을 결합하고 적용할 수 있는지 알아보기 위해 Nginx+Lua에 대해 어느 정도 이해할 수 있습니다. 깊이 있는 이해를 바탕으로 Nginx 방향에 대한 심층적인 전문가가 되는 것을 고려해 볼 수 있습니다.

3. MySQL/MongoDB

2단계를 기반으로 MySQL 애플리케이션 측면에서는 이전의 기본 SQL 최적화 외에도 대규모 배치와 같은 일부 복잡한 작업도 완료할 수 있습니다. 설치 및 구성 외에도 온라인 대규모 데이터 배치에 대한 가져오기 및 내보내기, 테이블 구조 변경, 인덱스 필드 추가 또는 삭제와 같은 위험도가 높은 작업을 처리할 수 있습니다. 다양한 문제 및 마스터-슬레이브 동기화 지연 문제 해결, 컴퓨터실 간 동기화 데이터 솔루션, MySQL 고가용성 아키텍처 등은 MySQL 애플리케이션 수준에 익숙하고 트랜잭션 메커니즘과 같은 MySQL의 핵심 기술에 익숙합니다. 격리 수준, 잠금 등), 트리거, 파티션 및 기타 기술에 대한 지식이 있어야 합니다. 디스크 최적화(SSD로의 SAS 마이그레이션), 서버 최적화(메모리, 서버 자체 구성), 기타 코어를 포함한 MySQL 성능을 이해하고 적용해야 합니다. 2단계(innodb_log_buffer_size/back_log /table_open_cache/thread_cache_size/innodb_lock_wait_timeout 등) 외에 성능 최적화 옵션, 연결 풀 소프트웨어 선택 적용, show*(show status/show profile) 등 연산문에 대한 심층적인 이해, 대부분의 성능 문제 추적을 완료하려면 재해 복구 및 복구를 포함한 MySQL 백업 기술에 대한 심층적인 지식과 MySQL 원칙 측면에서 핫 및 콜드 백업, 다중 IDC 백업 등에 대한 심층적인 이해가 있어야 합니다. 마스터-슬레이브 동기화(복제) 기술의 소스 코드 학습과 같은 MySQL 작동 메커니즘의 소스 코드 일부를 읽기 시작하거나 특정 소스 코드에 대한 학습과 같은 더 나은 이해 스토리지 엔진의 소스 코드를 배우고 이해합니다. (MyISAM/Innodb/TokuDB) 등 조건이 허락한다면 CSV 엔진을 참조하여 자신만의 간단한 스토리지 엔진을 개발하여 일부 데이터를 저장하고 이 과정에서 MySQL에 대한 이해를 높일 수 있습니다. 또한 DBA 방향으로 개발하는 것도 고려해보세요. 예를 들어 MongoDB 수준에서는 더 적게 쓰고 더 많이 읽을 때 MongoDB를 온라인으로 적용하기 시작하거나 일부 온라인 데이터 분석 및 처리 작업을 수행하는 것을 고려할 수 있습니다. 구체적인 시나리오는 작업을 기반으로 할 수 있지만 핵심은 다음과 같습니다. NoSQL과 다른 시나리오의 애플리케이션에 대해 조건이나 관심 사항이 허용되면 MongoDB의 작동 메커니즘에 대해 더 자세히 알아볼 수 있습니다.

4. Redis/Memcached

2단계를 기반으로 보다 심층적인 적용과 학습이 가능합니다. Memcached는 특별히 복잡하지 않기 때문에 Redis 부분에 대한 심층적인 이해를 돕기 위해 소스 코드, 특히 메모리 관리 부분을 읽는 것이 좋습니다. /Atomicity가 플래시 판매 시나리오 애플리케이션에 사용되도록 하기 위한 트랜잭션 처리) 이는 주로 aof와 같은 동기화 메커니즘의 애플리케이션 학습과 고가용성 Redis 애플리케이션 아키텍처 및 클러스터 설계를 포함합니다. 특히 핵심 이벤트 관리, 메모리 관리, 내부 핵심 데이터 구조 등에 대해 읽어보면 축적된 지식을 응용할 수 있다. 관심이 있다면 Redis의 매우 전문적인 사용자가 될 수 있습니다.

5. PHP

기본핵심능력으로는 2단계를 바탕으로 더욱 심도 있는 학습과 적용이 필요합니다. 기본 코드 적용 측면에서, PHP 개발에서 직면하는 문제의 95%를 해결할 수 있고 대부분의 PHP 기술을 이해할 수 있습니다. 하루 안에 대부분의 PHP 프레임워크를 사용하여 빠르게 시작할 수 있으며 각 주류 PHP 프레임워크의 장점을 이해할 수 있습니다. 프로젝트 개발 시 구성 측면에서 빠르고 편리하게 기술을 선택할 수 있습니다. 일반적인 두 번째 단계에 대한 지식 외에도 복잡한 고급 구성을 포함하여 좀 더 모호한 구성 옵션(php auto_prepend_file/auto_append_file)도 이해할 수 있습니다. 확장 및 원칙(예: memcached 확장 구성의 memcache.hash_strategy, apc 확장 구성의 apc.mmap_file_mask/apc.slam_defense /apc.file_update_protection 등)은 PHP를 포함한 PHP의 작동 메커니즘을 잘 이해하고 있습니다. -fpm 작업 메커니즘(예: php-fpm은 다양한 구성 시스템에서 프로세스 번호 계산 및 원리를 가능하게 함), zend 엔진(vm/gc/stream 처리)에 대한 기본 지식이 있고, 기본 PHP 커널 소스 코드를 읽었습니다(또는 관련 내용을 읽었습니다). 기사), PHP의 내부 메커니즘에 대한 이해가 있습니다. 대부분의 핵심 데이터 구조(기본 유형/배열/객체)의 구현에 대한 이해가 있으며, 핵심 인프라(zval/hashtable/gc)에 대한 심층적인 이해가 있습니다. ) 기본 PHP 확장 개발을 수행할 수 있고, 확장 개발(minit/rinit 등)에 대한 중급 및 고급 지식을 이해할 수 있으며, php와 apache/nginx(mod_php) 간의 다양한 통신 및 상호 작용 방법에 대해 자세히 알고 있습니다. /fastcgi); PHP 확장을 개발하는 것 외에도 낮은 수준에서 PHP를 이해하기 위해 Zend 확장을 개발하는 방법을 배우는 것을 고려할 수 있습니다.

6. C/C++

두 번째 단계를 바탕으로 C/C++ 언어에 대한 깊은 이해를 갖고 중소형 C/C++ 시스템 개발을 완성할 수 있습니다. 두 번째 단계의 기본 C/C++ 구문 및 데이터 구조 외에도 몇 가지 특수 데이터 구조(b-tree/rb-tree/skiplist/lsm-tree/trie-tree 등)를 학습하여 쉽게 학습할 수 있습니다. 특수 작업에 필요한 시스템 프로그래밍 측면에서 다중 프로세스 및 다중 스레드 프로그래밍에 익숙하며 다중 프로세스 상황에서 다중 프로세스 간의 통신 방법을 대부분 이해하고 통신 방법(공유 메모리)을 유연하게 선택할 수 있습니다. /semaphore/pipeline 등) 다중 스레드 프로그래밍은 문제를 잘 해결할 수 있습니다. 충돌 문제를 잠그고 동시에 다중 스레드 프로그램을 개발 및 디버그할 수 있으며 네트워크 프로그래밍에 익숙해지고 차이점과 선택을 이해할 수 있습니다. 멀티 프로세스 모델/멀티 스레드 모델/비동기 네트워크 IO 모델을 숙지하고 다양한 비동기 네트워크 IO 모델의 원리와 선택을 숙지합니다. 차이점(select/poll/epoll/iocp 등)을 숙지하고 일반적인 비동기식을 숙지합니다. 프레임워크(ACE/ICE/libev /libevent/libuv/Boost.ASIO 등) 및 그 사용 시간이 있으면 국내에서 개발된 일부 라이브러리(muduo 등)도 동시에 살펴볼 수 있습니다. 우수한 동시성 프로그램 아키텍처(리더-팔로우/마스터-워커 등)를 설계할 수 있어야 합니다. C/C++ 백엔드 서버 개발의 대부분의 문제(메모리 관리, 로그 인쇄, 높은 동시성, 프런트 엔드)를 이해해야 합니다. 엔드 및 백엔드 통신 프로토콜, 서비스 모니터링), 다양한 백엔드 서비스(struct/http/thirft/protobuf 등)의 RPC 통신 문제를 알고 GCC 및 GDB를 사용하여 컴파일 및 디버깅 프로그램을 개발하는 데 더 익숙합니다. 온라인 프로그램 코어가 손실된 후 신속하게 추적할 수 있습니다. 일반 모듈 개발 측면에서 문제를 해결하고 일부 일반 도구 또는 라이브러리(예: 비동기 네트워크 프레임워크, 로그 라이브러리, 메모리 풀, 스레드)를 축적하거나 개발할 수 있습니다. 풀 등), 그러나 버그를 쫓는 것을 피하기 위해 개발 후에 적용할지 여부에 주의해야 합니다.

7. 프론트엔드

HTTP 프로토콜에 대한 심층적인 이해(각 세부 프로토콜의 특수 프로토콜 코드 및 그 이유 등 302개 정적 파일이 캐시됨, 502개 포함) 이는 nginx 뒤의 PHP가 다운되었음을 의미합니다.) 프런트엔드에 있는 다양한 프레임워크 애플리케이션의 이전 통합 기능 외에도 프런트엔드를 학습하는 데 관심이 있다면 개발 형태로 더 깊이 들어갈 수 있습니다. jQuery와 같은 일부 프런트엔드 프레임워크 또는 상대적으로 사소한 서식 있는 텍스트 편집기를 개발합니다.

8. 다른 분야의 언어 학습

기본적인 PHP/C/C++ 언어를 기본적으로 축적해 두는 것이 좋습니다. 개인적인 관심사나 취미, 스크립팅 수업 언어는 Python/Ruby 등을 배울 수 있고, 함수형 프로그래밍 언어는 Lisp/Haskell/Scala/Erlang을 배울 수 있습니다. 통계 분석을 통해 R 언어에 대해 배울 수 있습니다. 백엔드 비즈니스의 관점을 바꾸고 싶다면 Node.js와 앞서 언급한 Nginx_Lua를 Nginx와 결합해 볼 수 있습니다. 다양한 언어를 배우는 것은 주로 자신의 비전과 문제 해결 방법의 차이점을 향상시키는 것입니다. 예를 들어, 프로세스/스레드 외에도 기계 간 통신 시나리오와 같은 경량 코루틴도 있다는 것을 이해하게 됩니다. , Erlang의 솔루션은 놀라울 정도로 간단합니다. 예를 들어 C/C++를 선택하지 않으려면 주로 시야를 개선하기 위해 유사한 효율적인 Erlang/Golang도 사용할 수 있습니다.

9. 다른 전문 분야 공부

이 단계에서는 기본적인 LNMP 기술 외에도 개인의 관심과 장기적인 목표에 따라 다른 분야의 지식 학습도 고려할 것입니다. 현재는 클라우드 컴퓨팅(분산 스토리지, 분산 컴퓨팅, 가상머신 등), 머신러닝(데이터 마이닝, 패턴 인식 등 통계에 적용, 개인화 추천), 자연과학 등 선택할 수 있는 분야가 많다. 언어 처리(중국어 단어 분할 등), 검색 엔진 기술, 그래픽 및 이미지, 음성 인식 등 이러한 고급 분야 외에도 고성능 시스템, 모바일 개발(Android/IOS), 컴퓨터 보안, 임베디드 시스템, 하드웨어 등 엔지니어링에 대해 자세히 배울 수 있는 분야도 많이 있습니다.

10. 시스템 설계

시스템 설계는 두 번째 단계에서 습득한 경험과 기술을 적용하여 대부분의 온라인 문제를 해결할 수 있는 비교적 복잡한 중대형 시스템을 설계할 수 있습니다. 브라우저-> CDN-> 액세스 계층-> Nginx+PHP-> 데이터베이스-> 다양한 복잡한 백엔드, 로직 백엔드 , 부정 행위 방지 백엔드, 외부 서비스) -> Jiangzi 백엔드의 보다 복잡한 비즈니스는 매일 수천만에서 수억 개의 트래픽 웹사이트의 정상적인 개발 및 유지 관리를 지원할 수 있습니다.

마지막으로 PHP를 더 잘 개발하는 데 도움이 되는 PHP 성능 최적화를 위한 10가지 팁을 공유하세요.

1. Foreach가 더 효율적입니다. while 및 for 루프 대신 foreach를 사용해 보세요.

2. 루프 내부에 변수, 특히 객체와 같은 변수를 선언하지 마세요

3. 여러 개의 중첩 루프에서는 가능하면 가장 긴 루프를 내부에 배치하고, 가장 짧은 루프는 외부 레이어에 배치합니다. , 이를 통해 CPU가 루프 계층을 통과하는 횟수를 줄이고 프로그램 성능을 최적화합니다

 4. 문자열을 인용하려면 큰따옴표 대신 작은따옴표를 사용하여 PHP 성능 최적화를 달성하세요

 5. , 사용 i=i+1 대신 i+=1입니다. c/C++의 습관을 따르며 매우 효율적입니다

6. Select SQL 문을 최적화하고 PHP 성능 최적화 목적을 달성하기 위해 Insert 및 Update 작업을 가능한 한 적게 수행합니다

7,, PHP의 파일 연산 효율성은 낮지 않지만, 파일 연산을 최대한 적게 하려고 노력하세요

 8., PHP 내부 기능을 최대한 사용하세요

9., 사용할 수 있습니다 PHP 내부 문자 문자열 연산 함수의 경우 정규식을 사용하지 마세요

10. Feof, fgets, fopen, 그리고 file이나 series 메소드 대신 file_get_contents를 사용할 수 있는 경우에는 file_get_contents를 사용해보세요. 훨씬 더 효율적입니다. 단, URL 파일을 열 때 file_get_contents의 PHP 버전 문제에 주의하시기 바랍니다


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.