저는 PHP cURL 멀티 핸들러를 사용하는 일부 FTP 서버와 함께 멀티 커넥션을 통해 이미 저를 다운로드하고 있습니다.PHP에서 cURL을 통해 FTP 최대 연결을 얻는 방법은 무엇입니까?
그리고 얼마나 많은 연결이 각 서버를 지원하는지 알고 싶습니다. 어떻게 컬 라이브러리로 이것을 할 수 있습니까?
저는 PHP cURL 멀티 핸들러를 사용하는 일부 FTP 서버와 함께 멀티 커넥션을 통해 이미 저를 다운로드하고 있습니다.PHP에서 cURL을 통해 FTP 최대 연결을 얻는 방법은 무엇입니까?
그리고 얼마나 많은 연결이 각 서버를 지원하는지 알고 싶습니다. 어떻게 컬 라이브러리로 이것을 할 수 있습니까?
관리자가 아닌 경우 특정 FTP 서버에 허용되는 동시 연결 수를 결정할 수 없습니다.
부분적인 해결책 1 : 연락처 : 당신이의 말은 ftp 50 개 개의 동시 연결을하자 서버가 오류를 max connections (#) exceeded
부분 해결 방법 2를 발행 할 때 확인하기 위해 시도 할 수있는 대안으로 ftp 관리자는 귀하에게 동시 접속 수를 물어 봅니다.
각 관리자는 내 사이트에 자신의 서버에 대한 ftp-options를 입력합니다. 그리고 그는 연결 수를 선택할 수 있습니다. 그러나 나는 그들이 종종이 가치에 실수를 범한다는 것을 안다. 그리고이 작품의 자동화에 대해서 생각합니다. 그래서 50 개의 간단한 요청을 서버에 보내고 20, 10 등을 보낼 수 있습니다. 예를 들어, 루트 폴더에있는 파일 목록을'CURLOPT_FTPLISTONLY = 1'로 가져 오는 것입니다. – mikatakana
좋은 옵션 인 것 같습니다. 이 방법을 사용하면 허용되는 동시 FTP 연결 수를 실제로 알 수 있습니다. 나중에 결과를 게시하십시오. –
@mikatakana 문제를 해결할 수 있다면 질문을 올바르게 표시 할 수 있습니까? 감사. –
내 임시 방편
<?php
$params = [
'host' => '{FTP_SERVER}',
'user' => '{FTP_LOGIN}',
'password' => '{FTP_PASSWORD}',
'streams' => {FTP_CONNECTIONS_COUNT}
];
$defaults = [
CURLOPT_HEADER => 1,
CURLOPT_RETURNTRANSFER => 0,
CURLOPT_NOBODY => 1,
CURLOPT_USERPWD => $params['user'] . ':' . $params['password'],
];
$mh = curl_multi_init();
$streams = [];
// Generate N requests to FTP-server
$tasks = array_fill(0, $params['streams'], $params['host'] . '/');
// Create streams
foreach ($tasks as $n => $task) {
$ch = curl_init();
curl_setopt_array($ch, $defaults + [
CURLOPT_URL => $task,
CURLOPT_FTPLISTONLY => 0,
CURLOPT_VERBOSE => 0
]);
curl_multi_add_handle($mh, $ch);
$streams[$n] = $ch;
}
// Process streams
$isAvailable = true;
do {
curl_multi_exec($mh, $running);
// Break if we have server error
if ($i = curl_multi_info_read($mh) and curl_getinfo($i['handle'], CURLINFO_HTTP_CODE) > 500) {
$isAvailable = false;
break;
}
curl_multi_select($mh);
} while ($running > 0);
// Close streams
foreach ($streams as $ch) {
curl_multi_remove_handle($mh, $ch);
curl_close($ch);
}
curl_multi_close($mh);
// Print result
var_dump($isAvailable);
내가 틀렸다면, 저를 수정하십시오.
Have 너 시험해? 얼마나 많은 동시 연결을 얻을 수 있습니까? –
이유는 50 개의 연결이 최대이므로 필요한 것입니다. – mikatakana
관리 아래에 ftp 서버가 있습니까? –
@Tuga, 아니요, 그들은 내게 로그인 할 사용자/암호 만 제공합니다. – mikatakana