revered

Рейтинг
131
Регистрация
03.08.2012

Я как прочитал в нете, пишут , что можно сделать PHP + JS + node.js. Почему с PHP криво будет? Мне не вариант, чтобы вы делали работу т.к.:

1) Я хочу научиться делать сам

2) Мне нужен не только этот чат, там на таком принцепе (мнгновенные сообщения, действия, типа публикация новости) будет много...

Грубо говоря как форум. Создал тему, и переписываються. Только каждый видет свою переписку. Т.е. если ты переписываешься с ТС, то ты какбудто один в этой теме, других сообщений не видешь. А у ТС есть блок с именами пользователей, ну и соотвествено, когда нажимаешь на имя, показываеться переписка с ним, на другое имя, переписка с другим и т.д. И при этом всем, все сообщения приходят мнговенно, как вконтакте, как в ICQ и т.д. Т.е. перезагружать страницу не нужно.

хм. понял.( спасибо!

---------- Добавлено 12.08.2013 в 23:00 ----------

а если установить куку, и на этой же странице отправить ajax запрос, на другую придут уже куки?

---------- Добавлено 12.08.2013 в 23:26 ----------

все, разобрался, спасибо!)

<script type="text/javascript">


var token = "'.$token.'";


$("a[href=#reg_restart]").click(function (eventObject) {
eventObject.preventDefault();

$("#reg_restart").hide();
$("#reg_error").hide();
form_reg.show();
});

$("a[href=#avt_ok]").click(function (eventObject) {
eventObject.preventDefault();
$("#avt_zashita").hide();
form_vxod.show();
});


//Проверка формы авторизации
var form_vxod = $("#form_vxod"); //форма авторизации

form_vxod.submit(function (eventObject) {
eventObject.preventDefault();

var email = $("input[id=vxod_email]");
var pass = $("input[id=vxod_password]");

var error_email_vxod = $("#error_email_vxod");
var error_pass_vxod = $("#error_pass_vxod");

var error_email_vxod_text = error_email_vxod.children();
var error_pass_vxod_text = error_pass_vxod.children();

var error = false;

//Проверка Email
if(email.val().length > 0)
{
var regV = /^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9][a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/;
var result_email = email.val().search(regV);

if (result_email == -1)
{
email.css({"background" : "#FF9191"}); error = true; error_email_vxod_text.text("Вы ввели некорректный адрес электронной почты. Пример коректнного адреса: name@gmail.com"); error_email_vxod.show();
}
else
{
email.css({"background" : "#FFF"}); error_email_vxod.hide();
}
}else{

email.css({"background" : "#FF9191"}); error = true; error_email_vxod_text.text("Введите, пожалуйста, адрес электронной почты."); error_email_vxod.show();

}


//Проверка пароля
if(pass.val().length < 5){pass.css({"background" : "#FF9191"}); error = true; error_pass_vxod_text.text("Пароль должен состоять минимум из 5 символов."); error_pass_vxod.show();}
else{
if(pass.val().search(/^[а-яА-Яa-zA-Z0-9_\@\#\$\%\^\&\?\№\*\!\(\)\-\+\=]{1,}$/)){pass.css({"background" : "#FF9191"}); error = true; error_pass_vxod_text.text("Вы ввели некорректный пароль. Допустимы русские и латинские буквы, цифры и следующие символы: _ @ # $ % ^ & ? № * ! ( ) - + = "); error_pass_vxod.show();}
else{pass.css({"background" : "#FFF"}); error_pass_vxod.hide();}
}

if(error == false)
{
$("#sumbit_vxod").attr("disabled", true);
$.ajax({
url: "/maine/ajax/login_check.php",
type: "POST",
data: {"email" : email.val(), "password" : pass.val(), "token" : token},
cache: false,
success: function(response){

$("#sumbit_vxod").attr("disabled", false);

if(response == 0)
{ form_vxod.hide(); $("#avt_error").show(); }
else if(response == 1)
{
email.css({"background" : "#FF9191"}); error_email_vxod_text.text("Пользователь с данным адресом электроной почты не найден."); error_email_vxod.show();

}else if(response == 2)
{
pass.css({"background" : "#FF9191"}); error_pass_vxod_text.text("Введенный пароль неверный."); error_pass_vxod.show();
}else if(response == 3)
{
form_vxod.hide();
$("#avt_zashita").show(); //показываем что нельзя так часто логинится

}else if (response == 4) //емаил авторизация
{
form_vxod.hide();
avt_pin_code_form.show();
}else if (response == 5) //телефон авторизация
{
///ПОКА ЕЩЁ НЕТ

}else if (response == 6)
{
location.reload(); //Если все окей
}

}

});//конец запроса

}
});

var avt_pin_code_form = $("#avt_pin_code_form");
var avt_pin_code_input = $("#avt_pin_code_input").mask("99999", {placeholder:" "});

var error_avt_pin_code = $("#error_avt_pin_code");
var error_avt_pin_code_text = error_avt_pin_code.children();

$("a[href=#avt_restart]").click(function (eventObject) {
eventObject.preventDefault();

$("#avt_restart").hide();
$("#avt_error").hide();
form_vxod.show();
avt_pin_code_input.val("");
});

avt_pin_code_form.submit(function (eventObject) { //форма отправки
eventObject.preventDefault();

avt_pin_code_input.css({"background" : "#FFF"}); error_avt_pin_code.hide();

var error = false;

if(avt_pin_code_input.val().length < 5){ error = true; avt_pin_code_input.css({"background" : "#FF9191"}); error_avt_pin_code_text.text("Вы не ввели PIN-код."); error_avt_pin_code.show(); }

if(error == false){

$("#submit_pin").attr("disabled", true);

$.ajax({
url: "/maine/ajax/avtorizaciya_pin.php",
type: "POST",
data: {"avt_pin_code" : avt_pin_code_input.val(), "token" : token},
cache: false,
success: function(response){

$("#submit_pin").attr("disabled", false);

if(response == 0){ avt_pin_code_form.hide(); $("#avt_error").show();}
else if(response == 1){
avt_pin_code_input.css({"background" : "#FF9191"}); error_avt_pin_code_text.text("Неверный PIN-код."); error_avt_pin_code.show();
}else if(response == 2){

avt_pin_code_form.hide();
$("#avt_restart").show();

}else if(response == 3){
location.reload(); //Если все окей
}
}

});//конец запроса
} //конец проверки на ошибки
}); //конец формы отправки

////////////////////////////////////////////////////////////////////////////////////

$("a[href=#ress_pass_restart]").click(function (eventObject) {
eventObject.preventDefault();

$("#ress_pass_restart").hide();
$("#ress_pass_error").hide();
form_ress_pass.show();
});

var form_ress_pass = $("#form_ress_pass");

form_ress_pass.submit(function (eventObject) {
eventObject.preventDefault();

var email = $("#ress_pass_input");

var error_email = $("#error_ress_pass");
var error_email_text = error_email.children();

var error = false;

//Проверка Email
if(email.val().length < 1){email.css({"background" : "#FF9191"}); error = true; error_email_text.text("Вы не заполнели поле: адрес электронной почты."); error_email.show();}
else{
if(email.val().search(/^[a-zA-Z0-9_\.\-]+@([a-zA-Z0-9][a-zA-Z0-9\-]+\.)+[a-zA-Z]{2,6}$/)){email.css({"background" : "#FF9191"}); error = true; error_email_text.text("Вы ввели некорректный адрес электронной почты. Пример коректнного адреса: name@gmail.com."); error_email.show();}
else{email.css({"background" : "#FFF"}); error_email.hide();}
}

if(error == false){

//$("#submit_ress_pass").attr("disabled", true);

$.ajax({
url: "/maine/ajax/ress_password.php",
type: "POST",
data: {"email" : email, "token" : token},
cache: false,
success: function(response){

$("#submit_ress_pass").attr("disabled", false);

if(response == 0){ form_ress_pass.hide(); $("#ress_pass_error").show();}
else if(response == 1){
email.css({"background" : "#FF9191"}); error_email_vxod_text.text("Пользователь с данным адресом электроной почты не найден."); error_email_vxod.show();
}else if(response == 2){

form_ress_pass.hide();
$("#ress_pass_ok").show();

}
}

});//конец запроса

}

});

</script>

Пришлось укоротить:( не влез весь

Я просто думал, может когда запись добовляешь в БД, можно создать какое-нибудь поле со временем, и БД сама удалять будет через час. Ну ладно, сделаю крон, все равно нагрузки толком то и нет...

А вот ещё вопрос, чтобы тему не создавать...

Делаю проект довольно серьезный (по моим меркам), нагруженый. Какому принципу лучше придерживаться: большей таблиц в БД, но в каждой таблице меньше данных, чтобы бд быстрее обращалась... или наоборот лучше будет?

Чаще всего будет 0. А если и больше 0, то не на много...

А на крон можно навешевать по 20-30 скриптов на день? Норм будет? Там точно такая же нагрузка какбудто я в адресной строке запустил скрипт? и не боллее?

Спасибо за советы! Вот ещё, мне нужно организовать аватарки на сайте, многие будут ставить аватарки, нужно их гдето хранить, я придумал так:

Автоматом создавать деректории в папке /avatars/, и каждую директории хранить допустим по 250 картинок. Мне кажиться такой вариант удобен, т.к. не будет милион папок.

В итоге будет такой вид: /avatars/1/1.jpg.........../avatars/1/250.jpg....../avatars/2/253.jpg............

Но есть маленькая проблема, сайт довольно крупный, планируеться большая посещаемости, и когда аватарок будет допустим 100.000, получаеться будет 400 папок. Что тоже уже много.

Помогите подобрать оптимальный вариант количество файлов в 1 папке.

На 1 странице может быть 1-30 аватарок, и все они будут грузиться с тех же папок....

Для сайта планируеться выделеный сервер, для начала примерно такой:

Процессор: 1 x Intel Pentium 4 3.0GHz

Память: 3 x 512 МБ

Диск: 2 x 80 ГБ, SATA

И сразу ещё один вопрос, раз уже про сервы заговорили:) Какую посещаемость примерно потянет такой серв? Учитывая, что впринципе сайт не сильно загружен. На данвере допустим страница грузиться до 2 секунд максимум, а так вообще пол секунды примерно.

На сайте много ajax запросов (пол сайта на них работает, модальные окна)

Спасибо за ответы!

Спасибо большое!

Модальные окна используються по разному. В большенстве случаев в модальном окне есть форма, а далее эта форма отправляеться ajax`сом.

Поэтому это модальное окно имеет не большой html код. Но она также имеет javascript, который обрабатывает форму.

И поэтому если сразу статически генерировать 10 модальных окон, мне кажеться не очень хорошо получаеться, что вроде небольшие 10 форм, но во первых засоряет сильно код, а во вторых ещё получаеться 10 javascript`ов, которые по коду ещё больше форм. В итоге, пользователь на сайте, грузит много лишнего кода каждый раз. А что мне кажеться самое плохое, из-за тогого подхода сильно увеличиваеться DOM дерево, из-за чего (как я думаю) сильно увеличиваеться нагрузка от jQuery. Поэтому 1 вариант не очень с этой стораны:(

Второй вариант плох тем что, во первых будут идти много запросов к серверу, а во вторых пользователю нужно будет ждать некоторое время, пока ajax подгрузит контент.

Также 1 вариант (как по мне) более просто в реализации. Но это не важно...

Всего: 350