 
  
  Подскажите пожалуйста зачем тут использовать цикл ?
Если же убрать данный цикл, то после каждой отдачи данных будет реконект
Даже если оставить
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');