Эти subprocess.Popen.wait()
единственный способ гарантировать, что они мертвы. Действительно, POSIX, ОС требует, чтобы Вы ожидали на своих детях. Многие *nix's создадут процесс "зомби": мертвый ребенок, которого не ожидал родитель.
, Если ребенок довольно правильно написан, это завершается. Часто, дочерние элементы, считанные из КАНАЛА. Закрытие входа является большой подсказкой ребенку, что это должно закрыть магазин и выход.
, Если ребенок имеет ошибки и не завершается, Вам, вероятно, придется уничтожить его. Необходимо исправить эту ошибку.
, Если дочерний элемент является циклом "подачи навсегда" и не разработан для завершения, необходимо или уничтожить его или обеспечить некоторый вход или сообщение, которое вынудит его завершиться.
Редактирование.
В стандартной ОС, Вы имеете os.kill( PID, 9 )
. Уничтожьте-9, резко, BTW. Если можно уничтожить их с SIGABRT (6?) или SIGTERM (15) это более вежливо.
В Windows OS, Вы не имеете os.kill
, который работает. Посмотрите на этот Рецепт ActiveState для завершения процесса в Windows.
у Нас есть дочерние процессы, которые являются серверами WSGI. Для завершения их, мы делаем Получать на специальном URL; это заставляет ребенка мыться и выходить.
Хотя он немного устарел, я действительно нашел KittenAuth забавным (и, вероятно, очень эффективным) подходом с использованием капчи. Однако, похоже, есть только одна демонстрация на их странице контактов .
Проблема с подходами, основанными на чистых изображениях (в отличие от текстовых изображений), заключается в том, что вы в основном не позволяете слепым пользователям использовать ваш сайт . Автор KittenAuth признал это в одном из комментариев на своем сайте.
Как забавный маленький райдер KittenAuth, на этой странице есть «10 худших капч за все время», включая одну из моих любимых :
Попробуйте использовать систему вызова вопросов, где простой вопрос требует простого познавательного ответа. Например, попросите пользователя ответить на следующий примерный вопрос:
Три машины на улице видны еще три машины. Сколько всего машин?
Технологии не настолько развиты, чтобы бот, чувствительный к пропускной способности, мог ответить на такой вопрос, и все же на этот вопрос легко ответить. Пользователь должен ввести три или три, чтобы подтвердить, что он человек, а не машина. У вас должен быть достаточно большой банк вопросов, чтобы бот не мог просто пинговать ваш сайт, просматривая вопросы для записи, чтобы он мог вернуться с ответами на руках.
Мне особенно нравится пример «какое животное умеет летать». Просто и эффективно.
Но подобными вещами можно злоупотреблять. Нетрудно будет придать ему культурную предвзятость - или предполагаемую.
И, как показал Остин Чейни , это может легко стать своего рода тестом на интеллект, и у вас будет доступность проблема.
Короче говоря: вы действительно не знаете о кодировке (наборе символов), используемой в переменных, которые передаются в ваш Скрипт PHP через GET или POST (особенно здесь проблема GET). По соглашению браузеры POST формируют серверный ресурс, указанный в атрибуте action
, с использованием кодировки страницы, которая может быть указана с помощью метатега http-Equ
-meta-tag ( charset
-meta-tag в HTML5) или через HTTP-заголовок. В качестве альтернативы некоторые браузеры также учитывают атрибут accept-charset
в форме при выборе правильной кодировки.
Кодирование параметров GET и самого URL-адреса зависит от настроек браузера и, следовательно, может контролироваться пользователь. Вы не должны полагаться на конкретную кодировку.
Как правило, вы обойдете большинство проблем, связанных с кодировкой, последовательно используя UTF-8 для всего и указав правильную кодировку в HTTP-заголовке ( Content-Type: text / html; charset = UTF-8
) - это даст правильную кодировку (UTF-8) для всех переменных, которые передаются в вашу строку (мы не говорим о сценариях румян, которые намеренно пытаются испортить кодирование, чтобы учесть некоторые векторы атак в вашем скрипте). меня беспокоят пользователи без включенного javascript, я думаю, что это нормально, если они не могут отправить форму. Если они не могут доверять вам включить javascript на вашем сайте, это не ваша вина, что они не могут использовать веб-сайт в полной мере.
РЕДАКТИРОВАТЬ:
См. Также: Практическое использование не на основе изображений Подходы CAPTCHA?
Но проблема в том, что если кто-то намеренно нацеливается на ваш сайт, такая техника не сработает.
РЕДАКТИРОВАТЬ2:
Я не могу предоставить ссылку на реальный пример, но я написал об этом в блоге немного больше деталей, поэтому вот пример кода:
function submit_form()
{
jQuery.ajax({
"type": "POST", // or GET
"url": 'action_url', // The url you wish to send the data to, the url you'd put in the "action" attribute on the form tag
"data": jQuery("form#the-form").serialize(), // The data you'll send. You need to get the form somehow. Easiest way is to give it an id.
"dataType": "json", // Only put this if the server sends the response in json format
"success": function(data, textStatus) // server responded with http status 200
{
// This is the happy case: server response has arrived
},
"error": function(req, textStatus, errorThrown) // maybe HTTP 404 or HTTP 500
{
// something went wrong, the response didn't go through or the response didn't come. Handle the situation: let the user know, or something.
},
"complete": function(req, textStatus) // This one always gets called anyway
{
// cleanup after yourself
} // XXX careful: if you put a comma here, IE6 will fail
});
}