반응형
일. 서언
회사 프로젝트에서는 주로 php를 서비스 언어로 개발하는데 블록체인이라는 기술은 일반적으로 노드(node)로 제공되며, 일부 하위 검증은 go를 통해 작성되는데, 우리 php가 어떻게 호출할 수 있을까.
둘, file_get_contents 또는 curl 사용
1,file_get_contents 사용 예제
예를 들어, 우리는 노드 프로그램의 기본 포트 번호가 3000이라는 것을 알고 있습니다. 그런 다음 경로를 정의하면 다음과 같이 node 프로그램에 액세스할 수 있습니다
private function uplinkPost($url, $post_data) {
//여기서 $post_data는 node 프로그램에 전달되는 인수로, 먼저 표준 url 전달자 형식으로 변환됩니다
//$url은 node 프로그램에 액세스하는 주소입니다
$postdata = http_build_query($post_data);
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded',
'content' => $postdata,
'timeout' => 60 * 10 // 타임아웃 시간(단위: s)
)
);
//php를 통해 제공되는stream_context_create()함수 접근 프로그램
$context = stream_context_create($options);
$result = @file_get_contents($url, false, $context);
//반환된 결과는 node 프로그램이 처리한 결과입니다
return $result;
}
구체적인 참고 사항, 바이두에서 stream_context_create() 함수를 추천합니다
2.curl을 이용하여 go프로그램을 청취한다
function curlRequest($url,$method='get',$data=''){
extension_loaded('curl') or die('The curl extension is not loaded.');
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 0);//헤더의 메시지 지우기
// curl 파라미터를 설정하고, 결과를 변수에 저장할지, 화면에 출력할지, false를 화면에 출력할지 설정합니다。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);//점프한 페이지를 가져올 지 여부
if($method == 'post'){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
$return_data = curl_exec($curl);
//$Headers = curl_getinfo($curl);//헤더
if (curl_errno($curl)) {
//log_message('error', 'curl잘못:'.curl_error($curl));
curl_close($curl);
exit();
}
curl_close($curl);
return $return_data;
}
여기도 curl을 이용해 go 프로그램에 접속하면 된다.어떤 포트를 도청하고 싶은 프로그램이라면 ip+port 방식으로도 구현할 수 있습니다
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
PHP가 QR코드의 생성 및 식별(코드)을 구현하는 방법 (0) | 2022.07.22 |
---|---|
php ob_start()를 이용하여 출력과 선택적 출력을 지웁니다 (0) | 2022.07.22 |
php의 정확도 계산 문제(bcadd와 bcsub) (0) | 2022.07.22 |
mysql 두 테이블에서 중복되지 않는 데이터 가져오기 (0) | 2022.07.21 |
mysql은 쿼리 결과 필드에 기본값을 사용합니다 (0) | 2022.07.21 |