Codeigniter의 ftp 클래스는 세 번째 선택적 매개 변수 timeout (http://ca2.php.net/manual/en/function.ftp-connect.php)을 지원하는 기본 ftp_connect PHP 호출을 사용합니다.
그러나 Codeigniter는 이것을 사용하지는 않지만 코드 기가 제공하는 기본 라이브러리를 확장 할 수 있습니다 (일부 작업을 수행하고 코어에 대한 모든 업데이트가 확장 클래스의 기능을 손상시키지 않는지 확인하십시오).).
<?php
class MY_FTP extends CI_FTP { //Assuming that in your config.php file, your subclass prefix is set to 'MY_' like so: $config['subclass_prefix'] = 'MY_';
var $timeout = 90;
/**
* FTP Connect
*
* @access public
* @param array the connection values
* @return bool
*/
function connect($config = array())
{
if (count($config) > 0)
{
$this->initialize($config);
}
if (FALSE === ($this->conn_id = ftp_connect($this->hostname, $this->port, $this->timeout)))
{
if ($this->debug == TRUE)
{
$this->_error('ftp_unable_to_connect');
}
return FALSE;
}
if (! $this->_login())
{
if ($this->debug == TRUE)
{
$this->_error('ftp_unable_to_login');
}
return FALSE;
}
// Set passive mode if needed
if ($this->passive == TRUE)
{
ftp_pasv($this->conn_id, TRUE);
}
return TRUE;
}
}
?>
및 스크립트에서, 당신은 당신의 구성 배열에 시간 제한 옵션을 추가 할 수 있습니다 : 그래서 당신의 문제를 해결하기 위해 당신은 당신이 응용 프로그램 라이브러리 폴더에 새 라이브러리를 만들 수
$this->load->library('ftp'); //if ftp is not autoloaded
$ftp_params = array('hostname'=>'1.2.3.4', 'port'=>21, 'timeout'=>10); //timout is 10 seconds instead of default 90
$ftp_conn = $this->ftp->connect($ftp_params);
if(FALSE === $ftp_conn) {
//Code to handle error
}
는 FTP 클래스를 디버그 매개 변수가 설정 배열에서 TRUE로 설정되어 있지 않으면 오류 메시지를 표시하도록 설계되지 않았습니다.이 경우 오류 만 표시됩니다. 그러나 모든 오류가 클래스의 _error() 함수를 호출하기 때문에 재정의 될 수도 있습니다. 그래서 당신은 당신의 $의 ftp_params 배열 => 진정한 '디버그'를 설정하고,과 같이 MY_ftp에 기능을 추가 할 수 있습니다
/**
* This function overrides
*/
function _error($line)
{
$this->error = $line;
}
을 그리고 기능은 GetError이() /** *이 기능은 를 오버라이드 (override) */ function get_error() { return $ this-> error;
$ftp_conn = $this->ftp->connect($ftp_params);
false를 반환하는 경우 }
그래서, 당신은 당신의 오류 및 표시 할
$error = $this->ftp->get_error();
를 호출 할 수 있습니다. 이제 클래스를 추가로 사용자 정의하여 더 복잡한 오류 처리 메커니즘을 사용자 정의하고 가질 수 있습니다 ...
희망 사항이 귀하의 질문에 응답합니다.
와우! 고마워 Maurice! 완벽하게 작동했습니다. 실제로는 매우 간단했습니다. CI가 기본적으로이 옵션을 사용하지 않는 이유는 무엇입니까? strage .... 도움을 많이 주셔서 감사합니다 : D –
당신을 환영합니다! 내가 도울 수있어서 다행 :) –