Подскажите пожалуйста зачем тут использовать цикл ?
Если же убрать данный цикл, то после каждой отдачи данных будет реконект
Даже если оставить
ob_flush();
flush();
То реконект будет примерно через секунд 30.
И вопрос номер 3. Как лучше всего сделать обновление в реал тайме с помощью данной библиотеки, сколько секунд будет оптимально держать соединение, какая должна быть чистота обновления (тоесть раз в сколько секунд посылать запрос), как часто нужно делать реконект ?
server { ...
location test.html {
proxy_pass http://backend;
}
}
upstream backend {
server http://10.0.0.2
}
var dgram = require("dgram");
var server = dgram.createSocket("udp4");
server.on("error", function (err) {
console.log("server error:\n" + err.stack);
server.close();
});
server.on("message", function (msg, rinfo) {
console.log("server got: " + msg + " from " +
rinfo.address + ":" + rinfo.port);
});
server.on("listening", function () {
var address = server.address();
console.log("server listening " +
address.address + ":" + address.port);
});
server.bind(8080);
// server listening 0.0.0.0:8080
<ul class="products">
<li data-product-id="55">Toster</li>
</ul>
$('.products li').on('click', function() {
console.log($(this).data('product-id')); // 55
});
<script type="text/javascript">
var id = <?=$id?>
operation(id);
</script>
В этом ничего страшного нет.$auth = Yii::app()->authManager;
/* @var $auth CPhpAuthManager */
$auth->clearAll();
$auth->createOperation('news_view', 'просмотр');
$auth->createOperation('news_add', 'добавление');
$auth->createOperation('news_edit', 'редактирование');
$auth->createOperation('news_delete', 'удаление');
$task = $auth->createTask('news_admin_task', 'Для администратора сайта разрешаем выполнять все действия сайта');
$task->addChild('news_edit');
$task->addChild('news_delete');
$bisRule = 'return Yii::app()->user->id==$params["news"]->user_id;';
$task = $auth->createTask('news_owner_task', 'Тут применяем бизнес-логику и разрешаем работать с отдельной новостью автору данной новости', $bisRule);
$task->addChild('news_edit');
$task->addChild('news_delete');
$bizRule = 'return Yii::app()->user->isGuest;';
$role = $auth->createRole(Users::GUEST, 'гость может только смотреть новости', $bizRule);
$role->addChild('news_view');
$role = $auth->createRole(Users::AUTOR, 'автор наследуют все что может гость(просмотр новости) + задачу news_owner_task');
$role->addChild(Users::GUEST);
$role->addChild('news_owner_task');
$task->addChild('news_add');
$role = $auth->createRole(Users::ADMIN, 'админ может все!');
$role->addChild(Users::GUEST);
$role->addChild('news_admin_task');
$task->addChild('news_add');
$auth->save();
class NewsController extends Controller
{
public function actionEditNews($id)
{
$model = News::model()->findByPk($id); //грузим модель нужную
if(!Yii::app()->user->checkAccess('news_edit', array('news'=>$model))) //проверяем только операцию, в данном случае не вызовет исключение для пользователей админа и автора именно этого поста, для остальных выдаст 403 ошибку
{
throw new CHttpException(403);
}
}
}
$neededFields = array(
'user_id' => null,
'news_id' => null
);
$_POST = array_merge($neededFields, $_POST);
public function rules(){
$rules = array(
array('login', 'match', 'allowEmpty'=>false, 'pattern'=>'/^([A-Za-z0-9-_$]){3,16}$/', 'message'=>$this->getErrorMessage('is_login'), 'on'=>'control'),
array('name', 'match', 'allowEmpty'=>false, 'pattern'=>'/[a-zA-Zа-яА-ЯёЁ]+\s{1}+[a-zA-Zа-яА-ЯёЁ]+$/u', 'message'=>$this->getErrorMessage('name'), 'on'=>'control'),
array('password,special_password', 'match', 'allowEmpty'=>false, 'pattern'=>'/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z-_!@,#$%]{6,16}$/', 'message'=>$this->getErrorMessage('is_password'), 'on'=>'control'),
array('special_password', 'coincidePassword', 'message'=>$this->getErrorMessage('coincide_password'), 'on'=>'control'),
);
if($this->isNewRecord){
$rules_for_new = array(
array('login', 'unique', 'className' => 'UsersModel', 'attributeName' => 'login', 'message'=>$this->getErrorMessage('login'), 'on'=>'control'),
array('mail', 'is_mail', 'on'=>'control'),
);
$rules = array_merge($rules,$rules_for_new);
}
return $rules;
}
var http = require('http'),
formidable = require('formidable'),
util = require('util');
http.createServer(function (req, res) {
if (req.method == 'POST') {
var form = new formidable.IncomingForm();
form.parse(req, function(err, fields, files) {
console.log(fields.message);
});
}
res.end();
}).listen(8888);
console.log('START');