Вы можете использовать это регулярное выражение:
^(?!\s)[a-zA-Z\d$#@ ]{1,5}(?
Подробности RegEx:
^
: Старт (?!\s)
: Отрицательный взгляд, не запускать пробел при запуске [a-zA-Z\d$#@ ]{1,5}
: разрешить длину этого символа от 1 до 5 (?: отрицательный вид сзади, не допускать пробела до конца
$
: конец Традиционно обработать стратегии обработки отказа на системном уровне; тем путем все приложения могут обладать устойчивой средой.
Я хотел бы обратиться к стратегии обработки отказа MySQL и прокси MySQL. Последний описывает утилиту MySQL, которая может сделать выравнивание нагрузки и обработку отказа, и кажется довольно легкой настроить.
Не ответ на вопрос, но это - более общее решение для обработки обработки отказа.
Нет ничего, встроил для обработки этого в PHP. Необходимо написать код сами.
Лучший подход должен был бы абстрагировать Ваш доступ к базе данных и создать класс, который может инкапсулировать логику обработки отказа.
Вот некоторый код, экспромтом:
interface MySQL_Interface {
public function query($sql);
}
class MySQL_Concrete implements MySQL_Interface {
public function __construct($host, $user, $pass, $dbname) {
$this->_mysql = mysql_connect($host, $user, $pass) or throw Exception("Could not connect to server");
mysql_select_db($db, $this->_mysql) or throw Exception("Could not connect to database");
}
public function query($sql) {
return mysql_query($sql) or throw new Exception("Query failed");
}
}
class MySQL_Failover implements MySQL_Interface {
public function __construct(MySQL_Interface $one, MySQL_Interface $two) {
$this->_one = $one;
$this->_two = $two;
}
public function query($sql) {
try {
return $this->_one->query($sql);
} catch (Exception $e) {
return $this->_two->query($sql);
}
}
}
$db = new MySQL_Failover(
new MySQL_Concrete('host1', 'user', 'pass', 'db'),
new MySQL_Concrete('host2', 'user', 'pass', 'db')
);
$db->query('SELECT * FROM Users');
PS: я уехал вполне немного отсюда, это не должно использоваться дословно.
PPS: я, вероятно, был бы лучше, чтобы пользоваться существующей библиотекой абстракции базы данных (Zend_Db, MDB2, ect) и реализовать их интерфейс вместо того, чтобы создать Ваше собственное специальное решение
Нет, это не имеет той сборки в. Я думаю, что простой способ состоит в том, чтобы использовать MySQL Proxy. Иначе, но логика (if (fails) { connect to another }
) в Вашем приложении, но это не является настолько симпатичным и большим с точки зрения производительности.
php имеет не созданный в механизме обработки отказа - вероятный на серьезном основании. Такая система обработки отказа должна быть реализована в операционной системе или аппаратном уровне.
Так или иначе Ваш образец обеспечивает дешевый и простой механизм обработки отказа.