>백엔드 개발 >PHP 튜토리얼 >PHP 프로그래머는 학습 제안을 통해 성장 병목 현상을 극복합니다.

PHP 프로그래머는 학습 제안을 통해 성장 병목 현상을 극복합니다.

WBOY
WBOY원래의
2016-07-25 08:48:59750검색
저에게는 PHP 개발에 종사하는 친구가 몇 명 있습니다. 인터뷰를 통해 많은 PHP 엔지니어들과 접촉하게 되었는데, 그들은 종종 그들의 미래 기술적인 성장과 발전을 의심합니다. 스스로 획기적인 발전을 이룰 수 있습니다.
PHP 엔지니어는 성장 병목 현상에 직면합니다
먼저 제가 언급한 PHP 엔지니어링 질문에 대해 분명히 말씀드리겠습니다. 졸업 후 주로 PHP를 사용하여 WEB 시스템을 개발했다는 ​​뜻입니다. 다른 언어로는 일한 적이 없습니다. 저는 3~4년 정도의 업무 경험을 가지고 있습니다. 저는 기본적으로 일반 WEB 시스템(백만 수준의 액세스, 1,000 수준 미만의 데이터 또는 비즈니스 로직이 특별히 복잡하지 않은 경우)을 문제 없이 개발하는 데 익숙합니다. 하지만 그들은 다음과 같이 지적할 것입니다:
PHP 이외의 다른 언어를 사용하지 말고, 쉘 스크립트를 클릭해도 됩니다.
PHP를 잘 다루지 못함(라이브러리를 제외하고 PHP 매뉴얼을 많이 읽지 않음)
지식이 비교적 좁음(수요에 직면하여 PHP 및 mysql을 사용하는 것 외에는 사용하지 않음) 다른 솔루션 알아두세요 )
PHP 코드는 주로 프로세스이며 객체 지향 구현이 너무 복잡하고 이해하기 어렵다고 생각합니다
이러한 PHP 사용자는 고성능, 높은 동시성 처리가 필요한 프로젝트나 비즈니스에 직면합니다. 그리고 많은 양의 데이터. 로직이 복잡하면(시스템이 여러 분야의 비즈니스 문제를 해결해야 함) 아이디어가 부족합니다. 문제의 본질을 분석하지 못하고 기술적 판단력이 부족하여 문제에 대한 일시적인 해결책을 빠르게 찾을 수 있지만, 끊임없는 일시적인 해결책에 시스템과 자체가 단계적으로 붕괴되는 경우가 많습니다. 그렇다면 어떻게 자신을 향상시킬 수 있나요? 더 어려운 시스템은 어떻게 도전할 수 있나요?
더 높은 도전은 어디에 있나요?
내 경험을 바탕으로 모든 사람의 지각적 이해를 돕기 위해 몇 가지 구체적인 과제를 나열합니다.
고성능 시스템의 과제는 무엇인가요?
웹 서버를 선택하는 방법은 무엇인가요? fast-cgi 모드를 사용해야 할까요
역방향 프록시 서비스를 사용해야 할까요? 전체 메모리 캐시 또는 하드 디스크 캐시를 선택하시겠습니까?
로드 밸런싱이 필요합니까? 애플리케이션 계층을 기반으로 합니까, 아니면 네트워크 계층을 기반으로 합니까? 높은 신뢰성을 보장하는 방법은 무엇입니까?
최적화 도구를 사용한 후 PHP 코드의 성능은 어떻습니까? 성능 병목 현상은 어디에 있습니까? C의 확장으로 작성해야 합니까?
사용자 접속의 특징은 읽기인가요, 쓰기인가요? 읽기-쓰기 분리가 필요합니까?
데이터는 어떻게 저장되나요? 쓰기 속도와 읽기 속도는 어떻습니까? 데이터가 증가함에 따라 액세스 속도는 어떻게 변합니까?
캐싱은 어떻게 사용하나요? 실패를 어떻게 고려하는가? 데이터 일관성을 보장하는 방법은 무엇입니까?
복잡도가 높은 시스템의 과제는 무엇인가요?
해당 사업이 어떤 분야에 해당하는지 알 수 있나요? 하나인가요, 여러 개인가요?
비즈니스 규칙의 변화를 적은 비용으로 실현할 수 있도록 비즈니스를 합리적으로 추상화할 수 있습니까?
데이터의 일관성과 보안이 보장될 수 있나요?
객체지향 분석과 설계 방법을 터득하셨나요?
제가 말한 질문에 긍정적으로 답할 수 있다면 기본적으로는 기술적으로 건축가가 될 수 있다고 생각합니다. . 아직 답을 할 수 없다면 다음 방향으로 강화해야 합니다.
어떻게 하면 병목 현상을 개선하고 돌파할 수 있는지
아직 답을 얻지 못했다면 다음과 같은 방향으로 강화해야 합니다.
원칙과 이면을 분석하세요. -기술적 판단력을 향상시키고 기술 솔루션 선택의 정확성을 향상시킬 수 있는 메커니즘을 사용하는 장면 작동
대학에서 중요한 지식, 운영 체제 원리, 데이터 구조 및 알고리즘을 배웁니다. 과거에는 시험을 위해 공부했지만 이제는 스스로 공부하고 그 이유를 알려야 합니다.
이미 대학에서 C 언어를 배웠더라도 다시 시작하세요. 이는 PHP 확장을 작성해야 할 수도 있을 뿐만 아니라 C 애플리케이션에는 항상 성능, 메모리 제어, 변수 수명 주기, 데이터 구조 및 알고리즘에 관심을 갖는 환경이 있기 때문입니다.
복잡한 문제를 해결하는 효과적인 방법인 객체지향 분석과 설계를 배워보세요. 추상화를 배우십시오. 이것이 복잡한 문제를 해결하는 유일한 방법입니다.
"그렇게 많은 걸 어떻게 배우나요? ​​배우는 데 시간이 얼마나 걸리나요?"
열심히 공부하고 계획만 잘 세우면 1~2년 정도는 걸릴 것으로 예상됩니다.
(참고: 다음은 원작자 Zuo Wenjian이 공유한 학습 방법입니다.)
학습 제안
어떻게 효과적으로 공부하느냐가 큰 문제입니다. 약간의 연습이 있지만 매우 분산되어 요약하기가 어렵습니다. 어젯밤 잠자리에 들기 전 문득 "아키텍처 중심, 유스 케이스 중심, 반복 개발"이라는 RUP의 핵심이 떠올랐습니다. 이 아이디어를 빌려 효과적인 학습 방법은 다음과 같이 표현할 수 있습니다.
원리 기반, 모델이나 메커니즘 중심, 작업 중심, 반복 학습
좀 추상적입니다. 학습 방법을 설명하기 위해 예를 들어 보겠습니다.
목적: 처리 성능을 향상시키는 방법을 알아봅니다.
반복 가능한 작업: IP로 위치를 찾습니다.
이것은 웹 애플리케이션의 일반적인 작업입니다. IP 데이터베이스에는 약 100,000행의 레코드가 있습니다.
첫 번째 반복: 성능을 고려하지 않고 함수 구현(PHP로 구현)
지역을 KEY(IP)로 직접 검색할 수 없기 때문에 데이터에 직접 넣거나 Simple을 통해 넣는다. 연관 배열과 같은 메소드는 작동하지 않습니다. 데이터를 먼저 정렬한 후 검색하는 것이 아이디어입니다
1. IP로 검색하는 방법은 무엇인가요? 정렬된 데이터의 경우 이진 검색이 가장 빠릅니다.
2. 정렬 방법은? 물론 라이브러리 함수인 sort를 사용해도 되지만, 배우는 중이므로 직접 퀵소트를 구현해 보는 것이 더 좋습니다.
두 번째 반복: 데이터 로드 및 정렬 최적화
첫 번째 단계를 수행하면 매번 데이터를 로드하고 정렬해야 하므로 기본적으로 사용할 수 없으며 시간이 너무 많이 걸립니다. 태워 버리는. 해결책은 데이터를 한 번 로드하고 정렬한 다음 각 PHP 프로세스가 액세스할 수 있는 위치에 배치하는 것입니다.
Memcache에 넣어보세요. 누구에게나 쉬운 질문입니다. 실제로 Memcache에는 더 많은 네트워크 작업이 있으므로 공유 메모리(EA 및 기타 가속기에서 지원)에 저장하는 것이 더 빠른 방법입니다. 데이터가 전체 또는 덩어리로 공유 메모리에 저장되는지, 성능을 테스트하는 방법은 무엇입니까? 병목 현상(xdebug)을 분석하는 방법은 무엇입니까? 이러한 문제를 중심으로
학습 목표: 탐지, 포지셔닝, PHP 성능을 최적화하는 방법. PHP 구현 구조가 성능에 미치는 영향.
세 번째 반복: PHP 확장 작성
아직 성능이 향상되지 않고 C/C 세계로 들어가야 하는데 이제부터는 PHPer뿐만 아니라 물론 서버 측의 만능 엔지니어는 C/C를 한 번도 해본 적이 없는 학생들에게는 큰 도전입니다. 여기서 C/C를 배우는 방법을 단순히 설명할 수는 없습니다.
학습 목표: C/C 배우기, PHP 확장 작성
결정 방법 필요성 학습의 메커니즘과 원리는 어떻습니까? 운전 학습 과제를 찾는 방법은 무엇입니까?
무엇을 배워야 할지 모르겠어요. 위 두 질문에 어떻게 답해야 할까요?
이 기술의 포지셔닝에서 배워야 할 핵심 포인트, 즉 어떻게 수행하는지(메커니즘)와 왜 수행할 수 있는지(모델 또는 원리)를 알아보세요.
이 기술을 나열하십시오. 학습 과제로서 가장 일반적인 적용은 간단한 것부터 어려운 것까지 실행됩니다.
제가 배우고 싶은 핵심 포인트는 다음과 같습니다.
JS가 HTML과 상호작용하는 방식(메커니즘)
JS의 동적 특성은 무엇이며, 어떻게 다른가요? 다른 동적 언어에서? (언어 모델)
완전히 독학이라면 학습해야 할 핵심 포인트(메커니즘, 모델, 원리)를 찾는 것이 학습 과제 설정이 사실 쉽지 않습니다. 경험이 풍부한 사람을 찾아 지도해 주거나 학습 팀을 추가하면 학습 속도가 실제로 크게 향상될 것입니다.
마지막으로 말씀드리고 싶은 점은: PHP는 단순하기 때문에 사용되지만 단순함이 우리의 성장을 제한할 수는 없다는 것입니다!
LAMP Brothers의 원본 PHP 튜토리얼 CD/"Essential PHP in Details"를 무료로 받아보세요. 자세한 내용은 공식 웹사이트 고객 서비스에 문의하세요: http://www.lampbrother.net
PHPCMS
2차 개발
http://yun.itxdl.cn/online/phpcms/index.php?u=5WeChat 개발       http://yun.itxdl.cn/online/weixin/index.php?u=5
모바일 인터넷 서버측 개발 http://yun.itxdl.cn/online/server/index.php?u=5
자바스크립트 강좌
http://yun.itxdl.cn/online/js/index.php?u=5
CTO교육 캠프                                                                             5


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