두 개의 서버가 있습니다. 서버 A에는 모든 데이터베이스가 있습니다. 서버 B가 서버 A의 데이터베이스에 쿼리하고 결과를 fsockopen()
과 함께 수신하려면 어떻게해야합니까? 현재 소켓을 통해 실제 텍스트 만 전달할 수 있습니다 (예 : 서버 A의 PHP 코드가 echo
에있는 것과 같이 인쇄하는 경우). 이 열린 소켓에서 쿼리 결과 (리소스)를 어떻게 통과시킬 수 있습니까?PHP의 fsockopen()을 통한 리소스 전달
0
A
답변
1
서버 B의 데이터베이스와 통신 할 수있는 유일한 방법은 fsockopen을 사용하는 경우 쿼리 결과를 직렬화하거나 JSON 형식으로 인코딩하고 소켓에 쓰는 것입니다.
서버 A의 mysql 서버에 대한 읽기 전용 액세스 만 허용하여 직접 쿼리 할 수 있습니까? 그렇지 않으면 REST 서비스가 fsockopen의 좋은 대안이됩니다.
앞에서 설명한 것처럼 서버 A에서 아무런 의미가 없으므로 소켓을 통해 리소스를 전달할 수 없습니다. 소켓을 통해 전달하려고하면 문자열 (예 : 리소스 # 1)이 반환됩니다.
1
fwrite/read가 데이터를 (이진) 문자열로 변환하기 때문에 PHP resource type*Docs*을 fsockopen을 통해 전달할 수 없습니다. 참조 : 자원 변수 자원으로 변환, 파일이나 데이터베이스 접속, 이미지 캔버스 영역 등 특별한 핸들러를 보유으로
자원으로 변환
는 이해되지 않는다.
동일한 내용을 다른 것으로 변환하는 경우도 마찬가지입니다. 문자열.
0
뭐하는거야? 원격 mysql을 허용하고 데이터베이스 서버가 작업을 수행하게하십시오.
피자 조각을주세요. 잠깐, 디지털로 전송할 수는 없지, 안 그래? 나는 그림을 보낼 것이다. 그거 좋았어, 그렇지? – outis
더 심각하게 네트워크를 통해 리소스를 보내는 것은 로컬 경로 이름을 보내는 것과 같습니다. 다른 컴퓨터는 파일에 액세스하여 파일을 찾을 수 있지만 컴퓨터의 파일과 동일하지는 않습니다. – outis