Connection timeout forceren

Status
Niet open voor verdere reacties.

Maximvdw

Gebruiker
Lid geworden
7 feb 2009
Berichten
921
Beste,

Ik zoek een mogelijkheid om een connection timeout te forceren wanneer een PHP
script word aangeroepen met specifieke argumenten. (Sleep is een response timeout, geen connection timeout).
Is dit mogelijk in PHP, of zal ik dit lager moeten doen (Apache).

- Maxim
 
Ik denk dat dat het tegenovergestelde is? Ik will een connection timeout forceren (niet blocken)
 
Je gebruikt hem dan verkeerd, dit staat namelijk in de beschrijving
Set the number of seconds a script is allowed to run. If this is reached, the script returns a fatal error

Oftewel, zet hem op 1 en het script zal een fatal error gaan tonen (Tenzij het natuurlijk binnen 1 seconde uitgevoerd wordt :confused:)
 
Kun je de poort waarover gecommuniceerd wordt dicht gooien of, en dan is dit het grove werk, de netwerkadapter uitschakelen?
 
Probleem is dat ik het enkel wil wanneer een bepaalde URL word aangesproken, en zou niet weten hoe ik dit in apache / php kan doen
Ik vermoed misschien dat ik met apache proxies iets kan doen maar ik zou niet weten hoe
 
Waar ben je specifiek naar op zoek? Ik vermoed dat jouw code afhankelijk is van een externe service en je wilt weten wat er gebeurd wanneer die een connection time-out geeft.

Je zou via een unit test een response code kunnen faken en dan het resultaat van je code kunnen controleren.
 
Bekijk eens een deel van swiftmailer
nu ik weet niet of het gnu is of andere opensource dus coppyright moet je eerst nog bekijken of je delen mag gebruiken

een deel ervan ziet er uit als
mijn eerste commentaar is dat den shutdown in __destruct kan zitten en timmout zit er niet in maar bij
__call zou je het kunnen controleren
nu heb ik niet zo veel tijd om het verder te bekijken maar dat komt later nog wel effen
PHP:
class Swift_Transport_StreamBuffer_SocketTimeoutTest
    extends Swift_Tests_SwiftUnitTestCase
{
    protected $_buffer;

    protected $_server;

    public function setUp()
    {
        $this->_buffer = new Swift_Transport_StreamBuffer(
            $this->_stub('Swift_ReplacementFilterFactory')
            );
    }

    public function skip()
    {
        $serverStarted=false;
        for ($i=0; $i<5; ++$i) {
            $this->_randomHighPort=rand(50000,65000);
            $this->_server = stream_socket_server('tcp://127.0.0.1:' . $this->_randomHighPort);
            if ($this->_server) {
                $serverStarted=true;
            }
        }
        $this->skipUnless(SWIFT_SMTP_HOST,
            'Cannot run test without an SMTP host to connect to (define ' .
            'SWIFT_SMTP_HOST in tests/acceptance.conf.php if you wish to run this test)'
            );
    }

    protected function _initializeBuffer()
    {
        $host = '127.0.0.1';
        $port = $this->_randomHighPort;

        $this->_buffer->initialize(array(
            'type' => Swift_Transport_IoBuffer::TYPE_SOCKET,
            'host' => $host,
            'port' => $port,
            'protocol' => 'tcp',
            'blocking' => 1,
            'timeout' => 1
            ));
    }

    public function testTimeoutException()
    {
        $this->_initializeBuffer();
        $e=null;
        try {
            $line = $this->_buffer->readLine(0);
        } catch (Exception $e) {
        }
        $this->assertIsA($e, 'Swift_IoException', 'IO Exception Not Thrown On Connection Timeout');
        $this->assertPattern('/Connection to .* Timed Out/', $e->getMessage());
    }

    public function tearDown()
    {
        if ($this->_server) {
            stream_socket_shutdown($this->_server, STREAM_SHUT_RDWR);
        }
    }
}
 
Hoe is het hier mee afgelopen? :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan