0

PHP と Codeigniter を使用して FTP 経由でファイルを送信しようとしています。Codeigniter FTP クラスは必要な機能を実行しないため、実際には使用していません。このため、これはネイティブ PHP です。

基本的に必要なのは、送信されたファイルがタイムアウトした場合にスクリプトがアクションを実行することです。現在、私のコードは次のとおりです。

// connect to the ftp server
$connection = ftp_connect($item_server);

// login to the ftp account
$login = ftp_login($connection, $item_username, $item_password);

// if the connection or account login failed, change status to failed
if (!$connection || !$login) 
    { 
        // do the connection failed action here
    }
else
    {

// set the destination for the file to be uploaded to
$destination = "./".$item_directory.$item_filename;

// set the source file to be sent
$source = "./assets/photos/highres/".$item_filename;

// upload the file to the ftp server
$upload = ftp_put($connection, $destination, $source, FTP_BINARY);

// if the upload failed, change the status to failed
if (!$upload) 
    {
        // do the file upload failed action here
    }
// fi the upload succeeded, change the status to sent and close the ftp connection
else 
{
    ftp_close($connection);
    // update the item's status as 'sent'
// do the completed action here
    }

}

したがって、基本的にスクリプトはサーバーに接続し、ファイルをドロップしようとします。現在、接続を確立できなかった場合、またはファイルをドロップできなかった場合にアクションを実行します。応答。自動化されたスクリプトで実行されているため、すべてに対する応答が必要であり、ユーザーが何が起こっているかを知る唯一の方法は、スクリプトがユーザーに通知することです。

サーバーがタイムアウトした場合、どうすれば応答を得ることができますか?

どんな助けでも大歓迎です:)

4

1 に答える 1

0

マニュアルを読むと、タイムアウト値を省略すると、デフォルトで 90 秒になります。

この値をより許容できる値に設定し、接続とログインを同時に検証するのではなく、接続のみを検証することができます。

// connect to the ftp server and timeout after 15 seconds if connection can't be established
$connection = ftp_connect($item_server, 21, 15);
if( ! $connection )
{
    exit('A connection could not be established');  
}

// login to the ftp account
if( ! ftp_login($connection, $item_username, $item_password) )
{
    exit('A connection was established, but the credientials seems to be wrong');   
}

ログイン資格情報が間違っている場合は警告がスローされることに注意してくださいftp_login()。そのため、別の方法で処理することができます (エラー処理または単に警告を抑制する)。

于 2012-05-16T07:52:26.687 に答える