PHP에서 Stream은 다양한 유형의 데이터 입력 및 출력 (예 : 파일, 네트워크 연결, 데이터 압축 등)을 처리 할 수있는 매우 강력한 기능입니다. stream_get_filters 및 stream_context_create 는 PHP 스트림 작업에서 매우 유용한 두 가지 기능입니다. 이 기사는이 두 기능을 조합하여보다 복잡한 흐름 작업을 구현하는 방법을 소개합니다.
stream_get_filters 는 현재 환경에 등록 된 모든 스트림 필터를 반환하는 PHP 기능입니다. 스트림 필터는 데이터 스트림 처리 중 스트림 컨텐츠의 수정 및 처리를 제공하는 메커니즘입니다. 예를 들어, 압축, 감압, 암호화 또는 암호 해독 작업.
<?php
// 사용 가능한 모든 스트림 필터를 얻으십시오
$filters = stream_get_filters();
// 출력 필터
foreach ($filters as $filter) {
echo $filter . PHP_EOL;
}
?>
이 코드에서 Stream_get_Filters 함수는 현재 PHP 환경에 등록 된 모든 필터의 목록을 반환합니다. 스트림 처리에 사용할 수있는 필터 유형을 이해하는 데 도움이되도록 필터 어레이를 통과하고 하나씩 인쇄하여 수행 할 수 있습니다.
stream_context_create는 스트림 컨텍스트를 만드는 데 사용됩니다. 스트림 컨텍스트는 스트림 작업을 처리 할 때 PHP의 구성 객체로 프록시 서버 설정, 스트림 필터 설정 등과 같은 다른 스트림 옵션을 설정하는 데 사용됩니다.
<?php
// 스트림 컨텍스트를 만듭니다,필터 및 기타 옵션이 포함됩니다
$options = [
'http' => [
'filter' => 'string.toupper' // 내장 필터를 사용하십시오,스트리밍 데이터를 대문자로 변환합니다
]
];
$context = stream_context_create($options);
// 생성 된 컨텍스트를 사용하여 파일 스트림을 엽니 다
$fp = fopen('http://gitbox.net/example.txt', 'r', false, $context);
// 데이터 및 출력을 읽습니다
if ($fp) {
while ($line = fgets($fp)) {
echo $line;
}
fclose($fp);
} else {
echo "파일을 열 수 없습니다!";
}
?>
위의 예에서는 gitbox.net 에서 읽은 모든 텍스트 콘텐츠를 대문자로 변환하는 Stream_Context_create를 사용하여 스트림 컨텍스트를 만듭니다. 그런 다음이 컨텍스트를 사용하여 Fopen을 통해 원격 파일을 열고 읽으십시오.
Stream_get_filters 와 Stream_Context_create를 결합하면 PHP 스트림 작업에서보다 복잡한 요구 사항을 구현할 수 있습니다. 예를 들어 스트리밍 컨텐츠를 처리하기 위해 올바른 필터를 동적으로 선택하거나 필요에 따라 여러 필터 및 옵션을 결합 할 수도 있습니다.
<?php
// 사용 가능한 모든 스트림 필터를 얻으십시오
$filters = stream_get_filters();
// 사용 가능한 필터를 보여줍니다
echo "사용 가능한 유량 필터:" . PHP_EOL;
foreach ($filters as $filter) {
echo $filter . PHP_EOL;
}
// 컨텍스트를 만듭니다,여러 필터를 적용하십시오
$options = [
'http' => [
'filter' => 'string.rot13' // 사용ROT13암호화 필터
],
'ftp' => [
'filter' => 'convert.iconv.utf-8/iso-8859-1' // 사용字符编码转换过滤器
]
];
// 스트림 컨텍스트를 만듭니다
$context = stream_context_create($options);
// 사용上下文访问远程文件
$fp = fopen('http://gitbox.net/example.txt', 'r', false, $context);
if ($fp) {
while ($line = fgets($fp)) {
echo $line;
}
fclose($fp);
} else {
echo "파일을 열 수 없습니다!";
}
?>
이 예에서는 먼저 사용 가능한 모든 스트림 필터를 나열합니다. 다음으로, HTTP 및 FTP 프로토콜에 대해 각각 다른 필터가 설정되는 스트림 컨텍스트가 생성됩니다. 이러한 방식으로 암호화, 인코딩 및 스트리밍 컨텐츠 변환과 같은 복잡한 작업을 수행 할 수 있습니다.
stream_get_filters 및 stream_context_create 는 PHP 스트리밍 작업에서 매우 유용한 도구입니다. 이 두 가지 기능을 통해 필터를 동적으로 선택하고, 흐름 옵션 설정 등을 설정하는 등 흐름 데이터를보다 유연하게 처리 할 수 있습니다. 실제 개발 에서이 두 기능의 사용을 마스터하면 다양한 스트림 관련 작업을 효율적으로 처리하는 데 도움이 될 수 있습니다.
이 두 기능을 결합하면 로컬 파일을 처리 할뿐만 아니라 네트워크 리소스를 작동 할 수 있으며 여러 필터를 사용하여 더 많은 기능을 수행하여 더 풍부한 기능을 달성합니다.