Hallo,
bei einem Bekannten streikt der Onlineshop, genauer gesagt, die Benutzerregistrierung- und anmeldung.
Ich habe das Problem auf den Swiftmailer eingrenzen können; dieser wirft nach dem Versuch, die Mailadresse nach RFC 2822 zu validieren, einen Timeout-Error (Fatal error: Maximum execution time of 30 seconds exceeded in ...).
Die betroffenen Zeile:
if (!preg_match('/^'.$this->getGrammar()->getDefinition('addr-spec').'$/D', $address)) {...}
Der regex ist knapp 3000 Zeichen lang und sieht so aus:
/^(?:(?:(?:(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))|(?:(?:[ \t](?:\r\n))?[ \t])))?(?:[a-zA-Z0-9!#$%&'*+-/=?^\{\}\|~]+(\.[a-zA-Z0-9!#\$%&'\*\+\-\/=\?\^_
{}|~]+))+(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))|(?:(?:[ \t](?:\r\n))?[ \t])))?)|(?:(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))|(?:(?:[ \t](?:\r\n))?[ \t])))?"((?:(?:[ \t](?:\r\n))?[ \t])?(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21\x23-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])))(?:(?:[ \t](?:\r\n))?[ \t])?"(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))|(?:(?:[ \t](?:\r\n))?[ \t])))?))@(?:(?:(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))|(?:(?:[ \t](?:\r\n))?[ \t])))?(?:[a-zA-Z0-9!#$%&'*+-/=?^\{\}\|~]+(\.[a-zA-Z0-9!#\$%&'\*\+\-\/=\?\^_
{}|~]+))+(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))|(?:(?:[ \t](?:\r\n))?[ \t])))?)|(?:(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))|(?:(?:[ \t](?:\r\n))?[ \t])))?[((?:(?:[ \t](?:\r\n))?[ \t])?(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x5A\x5E-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])))?(?:(?:[ \t](?:\r\n))?[ \t])?](?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))(?:(?:(?:(?:[ \t](?:\r\n))?[ \t])?(((?:(?:(?:[ \t](?:\r\n))?[ \t])|(?:(?:[\x01-\x08\x0B\x0C\x0E-\x19\x7F]|[\x21-\x27\x2A-\x5B\x5D-\x7E])|(?:\[\x00-\x08\x0B\x0C\x0E-\x7F])|(?1)))(?:(?:[ \t](?:\r\n))?[ \t])?)))|(?:(?:[ \t](?:\r\n))?[ \t])))?)))$/D
Kann es sein, dass der preg_match-Vergleich über 30 Sekunden dauert=
Vielen Dank, Grüße Basti