>  기사  >  백엔드 개발  >  자바와 PHP의 연결

자바와 PHP의 연결

jacklove
jacklove원래의
2018-06-15 14:12:235303검색

자바와 PHP의 연결

각 분야에서 제왕인 두 언어(JAVA/PHP)의 조합, 서로 다른 언어, 서로 다른 메커니즘을 검증해 보세요, PHP는 WEB 레이어를 담당하고, Java는 비즈니스를 담당합니다 그리고 데이터 로직 레이어, 정말 황금쌍입니다. 조합(Java+PHP 통합 = 새로운 하이브리드 달링)은 각각의 장점을 최대한 발휘하며 B/S 엔터프라이즈 프로그램 개발에 적합합니다.

1. 기술적 문제

두 가지 서로 다른 환경과 서로 다른 메커니즘을 가진 언어 조합을 해결하는 것이 가장 먼저 해결해야 할 문제입니다. 둘째, 커뮤니케이션 내용을 어떻게 다룰 것인가? 마지막으로 두 가지 개발 환경과 배포 환경을 통합하는 것입니까?

1.1두 언어의 비교

Php: 직관적이고 빠르고 간단하며 배우기 쉽고 동적 웹 페이지 개발에 효율적이며 풀뿌리 문화에 대한 강한 감각을 지닌 그는 결과에 집중하는 언어계의 민간인 영웅.

Java: 강력하고 복잡하며 다양한 고급 기능을 갖추고 IMB 및 Oracle과 같은 회사에서 인기가 높으며 언어 세계의 고귀한 왕자입니다.

1.2통신 문제

1.2.1메시지 큐

운영 체제 수준에서 관찰됨 : ​​PHP와 Java는 다음과 같습니다. 시스템 간의 통신은 IPC(프로세스 간 통신 기술)에 속합니다.

자바와 PHP의 연결

전통적인 Unix 환경에서 IPC 기술에는 파이프, 메시지 큐, 공유 메모리, 세마포어가 포함됩니다. 등이 있지만, 동일 시스템에서 IPC 통신은 성능이나 자원 활용 측면에서 TCP 기반의 소켓 통신에 비해 상당한 이점을 갖고 있다.

Unix/Linux에서 PHP는 기본적으로 모든 IPC 액세스 인터페이스를 제공합니다. 왜냐하면 PHP는 C 언어를 핵심으로 하는 쉘로 간주될 수 있고 IPC는 시스템 커널의 필수 부분으로 C 함수 인터페이스 세트를 제공하기 때문입니다. 외부 세계에서는 PHP가 IPC 기술을 매우 원활하게 사용할 수 있습니다. 플랫폼 기능(Windows의 IPC 기술은 Unix의 기술과 다름)을 추구하기 위해 Java는 시스템 수준의 IPC 액세스를 제공하지 않습니다. 이는 균일성을 추구하려면 성능이 희생될 수 있다는 Java의 문화적 특성도 반영합니다.

1.2.2​​​ Socket

메시지 큐 기술은 Unix/Linux 시스템에만 적용할 수 있지만 SOCKET은 TCP/IP 통신 메커니즘을 기반으로 하기 때문에 다양한 플랫폼에 적응.

자바와 PHP의 연결

위 그림에서 볼 수 있듯이 PHP는 HTTP 계층의 책임을 맡고, Java는 비즈니스 계층의 책임을 맡습니다. 큐(Message Queue, IPC 간 통신 중 하나인 프로세스)가 서로 통신하려면 Java에서 JNI의 지원이 필요합니다.

메시지 대기열을 사용하면 다음과 같은 이점이 있습니다.


1.3  ​​ 통신 내용 문제

통신 문제가 해결되었습니다. 통신 내용을 어떻게 해결해야 할까요?

PHP와 Java의 각 언어 내에서 정의된 데이터 유형은 두 언어가 서로 데이터를 전송할 때 데이터 유형이 어떻게 변환됩니까?

(1) Xml: XML은 플랫폼을 자랑하고 개체 모델을 잘 설명할 수 있는 데이터 캡슐화 기술입니다. 그러나 XML은 크기가 크고 전송 속도도 느립니다. 통신의 양쪽 끝에서 구문 분석하기가 번거롭습니다.

(2) 직렬화: 직렬화 및 역직렬화 개체를 사용하여 전송 프로세스 중에 데이터를 전송하는 것은 인식되고 합리적인 방법이며 두 언어 모두에서 지원됩니다.

2, Java 및 php 조합 선택

현재 알려진 PHP와 Java 간의 웹 통합 기술 SOAP(Simple Object Access)로 나눌 수 있습니다. 프로토콜), Quercus 및 PHP/Java Bridge 이러한 기술을 사용하면 웹 애플리케이션을 개발할 때 PHP와 Java가 서로의 라이브러리를 사용할 수 있습니다.


1.PHP와 Java를 독립적으로 만들기

2. 소켓 방식에 비해 전송 속도가 매우 빠릅니다.3. 로컬 머신(외부 수신 포트 없음)은 상대적으로 안전하고 관리하기 쉽습니다.


SOAP

SOAP는 IBM, Microsoft 및 기타 회사에서 개발하고 W3C에서 분산 객체 기술 구현을 위해 권장하는 프로토콜입니다. SOAP는 XML을 사용하여 프로그램 호출, 매개변수 전송 및 정보 반환을 패키지화하는 일련의 메커니즘을 제공하며 XML의 일반 텍스트 특성을 사용하여 HTTP, HTTPS 및 SMTP와 같은 통신 채널을 통해 기업 방화벽을 통과할 수 있습니다. 데이터를 독점적인 바이너리 형식으로 전송하는 분산 객체 기술 프로토콜인 CORBA, Java RMI 및 DCOM과 비교할 때 SOAP는 프로그래밍 언어, 플랫폼 및 하드웨어에 독립적인 특성을 가지고 있습니다.

참나무

Quercus는 이미 순수 Java로 완벽하게 구현된 오픈 소스 PHP 5 엔진입니다. Quercus는 Resin 애플리케이션 서버에서 실행되며 로드 밸런싱 및 프록시 캐싱과 같은 Resin 기능을 활용합니다.

PHP/Java Bridge

오픈 소스 제품에는 Php-java-bridge 및 LAJP

이 포함됩니다.


2.1 조건 선택

ü 무료, 오픈 소스

ü 간단하고 사용하기 쉬움

ü효율적이고 안정적입니다

2.2       LAJP

2.2.1#         웹 프로그래밍에 매우 적합합니다. JAVA는 복잡한 비즈니스 기능과 데이터가 포함된 프로그램을 작성하는 데 적합합니다. Ø 효율성과 안정성: Apache+PHP 조합은 뛰어난 웹 서비스 안정성을 제공할 수 있으며 JAVA는 연결 풀링, 트랜잭션 관리, 배포, 개체 모델과 같은 고급 기능을 보완할 수 있습니다.

Ø 혁신적인 커뮤니케이션 메커니즘: PHP와 Java 간의 통신은 통신 효율성과 플랫폼 호환성을 고려하여 시스템 메시지 대기열과 소켓이라는 두 가지 메커니즘을 사용합니다.

Ø

데이터 유형 자동 변환 메커니즘: 프로그래머가 구문 분석 코드를 작성할 필요 없이 PHP 데이터와 Java 데이터를 자동으로 일치시키고 정확하게 변환할 수 있습니다.

Ø 사용하기 쉬움: LAJP는 설치 및 구성이 쉽고 PHP 및 JAVA 프로그래밍은 각각의 프로그래밍 습관을 따릅니다.

Ø Lightweight: LAJP 아키텍처는 가장 기본적인 PHP 및 Java 환경 외에도 확장된 타사 구성 요소나 컨테이너가 필요하지 않습니다.

2.2.2 데이터 유형 변환

PHP와 Java는 각각 언어 내부적으로 정의된 고유한 데이터 유형을 가지고 있습니다. 또는 Java 데이터가 PHP로 전송될 때 LAJP는 자동으로 정확하게 변환합니다. 내부적으로 변환하기 위해 프로그래머는 디코딩 작업을 수행할 필요가 없습니다.

자바와 PHP의 연결

2.2.3 LALP 실행 환경

메시지 대기열 모드

환경은 System V 메시지 대기열의 작동을 충족해야 합니다.

  • System 현재 일반적인 Unix/Linux 시스템은 php(Apache) 및 java의 작동을 충족할 수 있으며 대부분 시스템을 지원합니다. 기본 V 메시지 큐.

  • php PHP는 메시지 대기열을 통해 Java 프로세스와 통신해야 합니다. PHP의 지침에 따르면 PHP는 버전 4.3.0 이후 System V 메시지 대기열을 지원합니다.

  • apache 특별한 요구 사항은 없으며 PHP 요구 사항만 충족하면 됩니다.

  • java 자바 버전은 1.5 이후입니다.

  • Unix/Linux 환경에서는 메시지 큐 모드 사용을 권장합니다.

소켓 모드

  • System 제한이 없으며 TCP/IP를 지원하지 않는 시스템을 찾기가 어렵습니다.

  • php PHP 지침에 따르면 PHP 버전 >=4.1.0은 소켓

    을 지원합니다.
  • apache 특별한 요구 사항은 없으며 PHP 요구 사항만 충족하면 됩니다.

  • java 자바 버전은 1.5 이후입니다.

  • Windows 시스템은 소켓 모드만 사용할 수 있습니다

개발 과정에서 두 모드를 동시에 사용할 수 있습니다. 예를 들어 일반 개발자는 Windows 환경을 사용하며 프로그램은 다음과 같습니다. Linux 시스템에 배포된 LAJP는 스키마 구성의 인코딩과 관련이 없습니다.

2.2.4 배포2.2.4.1 분산 아키텍처

중요하고 중요한 비즈니스 시나리오에서는 사용자 상호 작용 레이어와 비즈니스 레이어가 별도로 배포되며 LAJP를 사용할 수 있습니다. 이런 유형의 아키텍처에서는:

웹 서버의 Java는 매우 "얇은" 계층으로 후속 EJB 서비스에 연결하는 데에만 사용됩니다.

2.2.4.2 클러스터

사용자 방문이 증가함에 따라 WEB 서비스가 시스템에 병목 현상이 발생하는 경우가 많습니다. 다음은 클러스터의 LAJP 아키텍처 참조입니다.

자바와 PHP의 연결

2.2.4.3 웹 클러스터

소켓 통신 모드에서 LAJP를 사용하면 간단한 분산 WEB 클러스터 아키텍처를 구축할 수 있습니다.

자바와 PHP의 연결

2.2.4.4 복잡한 아키텍처 애플리케이션

LAJP 사용 유연성, 설계 및 선택 다음 아키텍처 참조는 WEB 계층과 EJB 계층 모두에서 클러스터를 사용합니다.

자바와 PHP의 연결

memcache는 분산 메모리 개체 캐싱 기술입니다. PHP에서는 세션 데이터를 여기에 저장하여 WEB 클러스터의 각 노드에 있는 데이터를 동기화하는 것이 매우 편리합니다. 웹 도메인에서 PHP의 역할은 Java의 "전문성"과 관련이 있습니다.

이 기사에서는 Java와 PHP의 관계를 소개합니다. 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트를 참고하세요.

관련 추천:

PHP 실무 경험 요약

ThinkPHP 관련 요약

thinkphp 기본 클래스 관련 내용

위 내용은 자바와 PHP의 연결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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