PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 19
mindcraft Отправлено: 06 Октября, 2013 - 07:55:21 • Тема: Разобрать массив объектов • Форум: Вопросы новичков

Ответов: 0
Просмотров: 93
Есть массив объектов вида:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Tbl2 Object
  4.         (
  5.             [tableFields:protected] => Array
  6.                 (
  7.                     [id] => 1
  8.                     [some_field] => test1
  9.                     [tables] => Tbl Object
  10.                         (
  11.                             [tableFields:protected] => Array
  12.                                 (
  13.                                     [id] => 4
  14.                                     [name] => TEST INSERT 2
  15.                                     [text] => выборка по id=4
  16.                                     [fk_tbl2] => 1
  17.                                 )
  18.                         )
  19.  
  20.                 )
  21.         )
  22.  
  23.     [1] => Tbl2 Object
  24.         (
  25.             [tableFields:protected] => Array
  26.                 (
  27.                     [id] => 2
  28.                     [some_field] => test2
  29.                     [tables] => Tbl Object
  30.                         (
  31.                             [tableFields:protected] => Array
  32.                                 (
  33.                                     [id] => 2
  34.                                     [name] => TEST8
  35.                                     [text] => выборка по id=2
  36.                                     [fk_tbl2] => 2
  37.                                 )
  38.                         )
  39.  
  40.                 )
  41.         )
  42.  
  43.     [2] => Tbl2 Object
  44.         (
  45.             [tableFields:protected] => Array
  46.                 (
  47.                     [id] => 2
  48.                     [some_field] => test2
  49.                     [tables] => Tbl Object
  50.                         (
  51.                             [tableFields:protected] => Array
  52.                                 (
  53.                                     [id] => 3
  54.                                     [name] => TEST INSERT
  55.                                     [text] =>
  56.                                     [fk_tbl2] => 2
  57.                                 )
  58.                         )
  59.  
  60.                 )
  61.         )
  62.  
  63. )
  64.  

Никак не могу привести его к виду:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Tbl2 Object
  4.         (
  5.             [tableFields:protected] => Array
  6.                 (
  7.                     [id] => 1
  8.                     [some_field] => test1
  9.                     [tables] => Tbl Object
  10.                         (
  11.                             [tableFields:protected] => Array
  12.                                 (
  13.                                     [id] => 4
  14.                                     [name] => TEST INSERT 2
  15.                                     [text] => выборка по id=4
  16.                                     [fk_tbl2] => 1
  17.                                 )
  18.                         )
  19.  
  20.                 )
  21.         )
  22.  
  23.     [1] => Tbl2 Object
  24.         (
  25.             [tableFields:protected] => Array
  26.                 (
  27.                     [id] => 2
  28.                     [some_field] => test2
  29.                     [tables] => Array (
  30.                        [0] => Tbl Object
  31.                         (
  32.                             [tableFields:protected] => Array
  33.                                 (
  34.                                     [id] => 2
  35.                                     [name] => TEST8
  36.                                     [text] => выборка по id=2
  37.                                     [fk_tbl2] => 2
  38.                                 )
  39.                         ),
  40.                        [1] => Tbl Object
  41.                         (
  42.                             [tableFields:protected] => Array
  43.                                 (
  44.                                     [id] => 3
  45.                                     [name] => TEST INSERT
  46.                                     [text] =>
  47.                                     [fk_tbl2] => 2
  48.                                 )
  49.                         )
  50.  
  51.                 )
  52.         )
  53. )
  54.  

Буду признателен за любую помощь.
mindcraft Отправлено: 07 Августа, 2013 - 13:08:55 • Тема: Запуск скриптов из консоли • Форум: Вопросы новичков

Ответов: 5
Просмотров: 330
Проблема решилась разрезанием файла на несколько кусков. Всем спасибо.
mindcraft Отправлено: 07 Августа, 2013 - 01:23:37 • Тема: Запуск скриптов из консоли • Форум: Вопросы новичков

Ответов: 5
Просмотров: 330
esterio пишет:
mindcraft пишет:
> /dev/null &

mindcraft пишет:
Никаких ошибок в парсинге и в файле нет

Вы уверены? Попробуйте запустить скрипт без /dev/null


При запуске без /dev/null не выводится ничего, что говорит о корректной работе. При возникновении ошибок они должны были бы печататься. Кроме того, как я уже выше говорил, этот же скрипт много часов работал на другом компе и парсил тот же файл. Проблема возникла после переноса.
mindcraft Отправлено: 07 Августа, 2013 - 01:04:17 • Тема: Запуск скриптов из консоли • Форум: Вопросы новичков

Ответов: 5
Просмотров: 330
Есть скрипт, который парсит очень большой (200Мб) xml-файл и пишет данные в БД. Запускаю скрипт таким образом:
CODE (htmlphp):
скопировать код в буфер обмена
  1. php /home/user/ServerDocs/mysite.lh/dataImport.php > /dev/null &

Скрипт запускается, мне показывается id процесса, но в БД добавляется только пара-тройка записей (иногда и вовсе одна), после чего, если я правильно понимаю, скрипт прерывается. Никаких ошибок в парсинге и в файле нет, т.к. я уже запускал этот процесс на другом сервере. Очевидно проблема в настройках php или апача, но я не могу понять в каких.
mindcraft Отправлено: 21 Апреля, 2013 - 11:03:10 • Тема: Странное поведение mod_rewtite • Форум: Apache и другие веб-серверы

Ответов: 5
Просмотров: 564
LIME пишет:
CODE (htmlphp):
скопировать код в буфер обмена
  1. RewriteRule ^action(/|$) action.php [L]
  2. RewriteRule ^adata(/|$) adata.php [L]
  3. RewriteRule .* index.php
это я не так понял


И снова 404. Видимо дело в настройках сервера... Иначе магия какая-то.
mindcraft Отправлено: 21 Апреля, 2013 - 10:45:38 • Тема: Странное поведение mod_rewtite • Форум: Apache и другие веб-серверы

Ответов: 5
Просмотров: 564
LIME пишет:
RewriteRule ^action/?$ action.php [L]
RewriteRule ^adata/?$ adata.php [L]
RewriteRule .* index.php


Такой htaccess:
CODE (htmlphp):
скопировать код в буфер обмена
  1. AddDefaultCharset UTF-8
  2.  
  3. RewriteEngine on
  4.  
  5. RewriteRule \.inc$ index.php
  6.  
  7. RewriteCond %{REQUEST_FILENAME} !-f
  8. RewriteCond %{REQUEST_FILENAME} !-d
  9.  
  10. RewriteRule ^action/?$ action.php [L]
  11. RewriteRule ^adata/?$ adata.php [L]
  12. RewriteRule .* index.php


Url вида http://mysite[dot]ru/action/admin/tags/add/ все равно возвращает 404.
mindcraft Отправлено: 21 Апреля, 2013 - 10:27:00 • Тема: Странное поведение mod_rewtite • Форум: Apache и другие веб-серверы

Ответов: 5
Просмотров: 564
есть htaccess со следующим содержимым:
CODE (htmlphp):
скопировать код в буфер обмена
  1. AddDefaultCharset UTF-8
  2.  
  3. RewriteEngine on
  4.  
  5. RewriteRule \.inc$ index.php
  6.  
  7. RewriteCond %{REQUEST_FILENAME} !-f
  8. RewriteCond %{REQUEST_FILENAME} !-d
  9.  
  10. RewriteRule !^(adata|action)(/|$) index.php
  11. RewriteRule ^action(/|$) action.php
  12. RewriteRule ^adata(/|$) adata.php


Суть проста - если не adata и не action в url - переводить на index.php. В противном случае - на action.php и на adata.php соответственно. Первое правило работает. Правила с adata и action возвращают 404. При этом на другом хостинге все работало. Уже голову сломал, в поисках решения.
mindcraft Отправлено: 14 Марта, 2012 - 11:35:56 • Тема: Действие внутри цикла • Форум: Вопросы новичков

Ответов: 1
Просмотров: 93
Здравствуйте.

Возникла такая проблема. Есть массив вида:
$big_arr[0][0]="1";
$big_arr[0][1]="2012-03-13 20:10:00";
$big_arr[0][2]="параметр";
$big_arr[1][0]="2";
$big_arr[1][1]="2012-03-13 20:12:00";
$big_arr[1][2]="параметр";
$big_arr[1][0]="3";
$big_arr[1][1]="2012-03-13 21:15:00";
$big_arr[1][2]="параметр";

В цикле я разбираю массив и пишу в разные таблицы БД. Например:
$big_arr[0][0]="1" - значит пишу в таблицу tab1,
$big_arr[1][0]="2" - значит пишу в таблицу tab2 и т.д.

Все таблицы (tab1, tab2 и т.п.) вида:
ID сеанса | Дата/время события | Параметр

При этом, если в одном из массивов вложенных в массив $big_arr есть значение даты/времени больше некого, то я должен для данной строки завести новый сеанс, т.е. изменить ID сеанса и последующие строки писать с ним.

Иными словами:
иду по массиву $big_arr
PHP:
скопировать код в буфер обмена
  1. foreach($big_array as $value){
  2.  
  3. while($validtime>$value[1]){ //пока некое дата/время больше имеющегося, новый сеанс не нужен
  4. $newsess = 0;
  5. }
  6.  
  7. if($validtime<$value[1]){ //если меньше, то нужен
  8. $newsess = 1;
  9. $newstarttime = $value[1];
  10. }
  11.  
  12. if($newsess==1){
  13. //завожу новый сеанс, получаю его id, передаю его в функцию записи данных
  14. $sess = new Sessions;
  15. $sess->User_ID  = $user_info->ID;
  16. $sess->Start_Time = $newstarttime;
  17. $sess->save();
  18.  
  19. $sid = $sess->Session_ID;
  20.  
  21. $this->dataInsert($value, $sid);
  22. }
  23. else{
  24. $this->dataInsert($value, $sid);
  25. }
  26.  
  27. }


Но данный код не работает. Никаких записей в бд не добавляется. В чем может быть проблема. Заранее спасибо.
mindcraft Отправлено: 23 Ноября, 2011 - 11:07:01 • Тема: Проблема с размером ответа от сервера через сокеты • Форум: Работа с сетью

Ответов: 9
Просмотров: 1907
Viper - спасибо, функция работает, но не вполне понятно как.
Кажется дело в
PHP:
скопировать код в буфер обмена
  1. while ($line = fgets($fp)) $ret .= $line;
?
mindcraft Отправлено: 22 Ноября, 2011 - 17:22:18 • Тема: Проблема с размером ответа от сервера через сокеты • Форум: Работа с сетью

Ответов: 9
Просмотров: 1907
Попытался таким образом:
PHP:
скопировать код в буфер обмена
  1.  while (!feof($fp)){
  2.   $r = $r.fgets($fp);
  3. ...
  4.  


В итоге получил повисший браузер не сумевший переварить бесконечный $r.
Тогда попытался вот так:
PHP:
скопировать код в буфер обмена
  1. while (!feof($fp)){
  2. while (strlen($r)<=15033){
  3.  $r = $r.fgets($fp);
  4. ...
  5.  

где 15033 - это количество символов в ответе (эту величину я могу получить от сервера), но результат тот же - бесконечный $r.
mindcraft Отправлено: 22 Ноября, 2011 - 17:03:31 • Тема: Проблема с размером ответа от сервера через сокеты • Форум: Работа с сетью

Ответов: 9
Просмотров: 1907
А каким образом объединять их в одну? Не очень понял идею.
mindcraft Отправлено: 22 Ноября, 2011 - 16:58:28 • Тема: Проблема с размером ответа от сервера через сокеты • Форум: Работа с сетью

Ответов: 9
Просмотров: 1907
Я понимаю, что проблема с кавычками (и не только с ними), но это следствие того, что xml-ответ получен не полностью.
Основной вопрос - почему он не полностью получен?
mindcraft Отправлено: 22 Ноября, 2011 - 15:08:34 • Тема: Проблема с размером ответа от сервера через сокеты • Форум: Работа с сетью

Ответов: 9
Просмотров: 1907
Есть функция:
PHP:
скопировать код в буфер обмена
  1. function GetHallPlan(){
  2.         $fp = fsockopen("192.168.200.1", 9194, $errno, $errstr, 30);
  3.         if (!$fp){
  4.                 echo "$errstr ($errno)<br> ";
  5.         }
  6.         else{
  7.                 $wait = true;
  8.                 stream_set_blocking($fp, 0);
  9.                
  10.                 $query = "тут_запрос_к_серверу";
  11.  
  12.                 fwrite($fp, $query);
  13.                         while (!feof($fp)){
  14.                                 $r = fgets($fp);
  15.                                
  16.                                 if(!empty($r)){                
  17.                                         $xml = simplexml_load_string($r);
  18.                                         foreach($xml->Data->Session->Theatre->Hall->Levels->Level->Places->Place as $chair){
  19.                                                 $top =  $chair['Y'];
  20.                                                 $left =  $chair['X'];
  21.                                                 $row = $chair['Row'];
  22.                                                 $num =  $chair['Place'];
  23.                                                 $status = $chair['Status'];
  24.                                                 if($status!=4 && $status!=5){
  25.                                                         echo"
  26.                                                                 <span style='top:".$top."px; left:".$left."px;'>".$num."</span>
  27.                                                         ";
  28.                                                 }
  29.                                                 elseif($status==4 || $status==5){
  30.                                                         echo"
  31.                                                                 <span class='busy' style='top:".$top."px; left:".$left."px;'>".$num."</span>
  32.                                                         ";
  33.                                                 }
  34.                                         }
  35.                                 }
  36.                                
  37.                                 if (!strcmp($r, "")){
  38.                                         if (!$wait){
  39.                                                 break;
  40.                                         }
  41.                                 }
  42.                                 else{
  43.                                         $wait = false;
  44.                                 }
  45.                         }
  46.                         fclose($fp);
  47.                
  48.         }
  49. }


Функция делает следующее:
1. устанавливает сокет-соединение с сервером кинотеатра
2. отправляет запрос на сервер
3. получает ответ и пишет его в переменную $r
4. обрабатывает ответ, выводя план зала

Ответом является xml-файл вида:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?xml version='1.0' encoding='Windows-1251' standalone='yes'?>
  2. <XML>
  3. <Result>Ok</Result>
  4. <Error></Error>
  5. <Remark></Remark>
  6. <Data>
  7. <Session ID='35990' Geometry='1' ShowBusyPlaces='1'>
  8. <Theatre ID='1'>
  9. <Hall ID='1'>
  10. <Levels>
  11. <Level ID='1' Reservation='1' Sale='0'>
  12. <Places PlacesCount='250' PlacesLimit='100' Width='690' Height='765'>
  13. <Place ID='3' Row='1' Place='1' X='90' Y='45' Width='35' Height='35'></Place>
  14. ... много мест в кинозале...
  15. <Place ID='131' Row='9' Place='9' X='410' Y='365' Width='35' Height='35'></Place>
  16. </Places>
  17. </Level>
  18. </Levels>
  19. </Hall>
  20. </Theatre>
  21. <Movie ID='343'>
  22. </Movie>
  23. <Date>24.11.2011</Date>
  24. <Time>11:15</Time>
  25. </Session></Data>
  26. </XML>


Проблема в том, что в $r пишется не весь ответ а его часть.
Вот результат var_dump($r):
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?xml version='1.0' encoding='Windows-1251' standalone='yes'?><XML><Result>Ok</Result><Error></Error><Remark></Remark><Data><Session ID='36006' Geometry='1' ShowBusyPlaces='1'><Theatre ID='1'><Hall ID='1'><Levels><Level ID='1' Reservation='1' Sale='0'><Places PlacesCount='250' PlacesLimit='100' Width='690' Height='765'><Place ID='3' Row='1' Place='1' X='90' Y='45' Width='35' Height='35'></Place>
  3. ...
  4. <Place ID='16"

и на этом обрывается.

Соответственно, функция выводит следующее:

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : AttValue: ' expected in X:\home\kino-tver.new\www\common.php on line 253

Warning: simplexml_load_string() [function.simplexml-load-string]: ' Y='605'></Place><Place ID='222' X='450' Y='605'></Place><Place ID='223' X='490 in X:\home\kino-tver.new\www\common.php on line 253

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in X:\home\kino-tver.new\www\common.php on line 253

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : attributes construct error in X:\home\kino-tver.new\www\common.php on line 253

Warning: simplexml_load_string() [function.simplexml-load-string]: ' Y='605'></Place><Place ID='222' X='450' Y='605'></Place><Place ID='223' X='490 in X:\home\kino-tver.new\www\common.php on line 253

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in X:\home\kino-tver.new\www\common.php on line 253

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Couldn't find end of Start Tag Place line 1 in X:\home\kino-tver.new\www\common.php on line 253

Warning: simplexml_load_string() [function.simplexml-load-string]: ' Y='605'></Place><Place ID='222' X='450' Y='605'></Place><Place ID='223' X='490 in X:\home\kino-tver.new\www\common.php on line 253

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in X:\home\kino-tver.new\www\common.php on line 253

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Premature end of data in tag Places line 1 in X:\home\kino-tver.new\www\common.php on line 253
...

и т.д.

Если ответ от сервера брать из физического файла и обрабатывать с помощью simplexml_load_file - все работает нормально.
Но необходимо обрабатывать именно строку.
Заранее спасибо за любую помощь.
mindcraft Отправлено: 11 Ноября, 2011 - 17:23:26 • Тема: Цикл foreach в обработке результатов simplexml_load_string • Форум: Вопросы новичков

Ответов: 8
Просмотров: 334
vectorserver - неа, не катит

Bio man - а откуда берутся эти нули? Как от них избавиться?
mindcraft Отправлено: 11 Ноября, 2011 - 16:49:13 • Тема: Цикл foreach в обработке результатов simplexml_load_string • Форум: Вопросы новичков

Ответов: 8
Просмотров: 334
результат:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. NULL
  3. NULL
  4. NULL
  5. ...
  6. object(SimpleXMLElement)#3 (6) {
  7.  ["@attributes"]=>
  8.   array(1) {
  9.     ["ID"]=>
  10.     string(3) "343"
  11.   }
  12.   ["Name"]=>
  13.   object(SimpleXMLElement)#2 (0) {
  14.  }
  15.   ["Duration"]=>
  16.   string(12) "1С‡ 50РјРёРЅ"
  17.   ["Remark"]=>
  18.   object(SimpleXMLElement)#5 (0) {
  19.  }
  20.   ["Picture"]=>
  21.   object(SimpleXMLElement)#6 (0) {
  22.  }
  23.   ["Properties"]=>
  24.   object(SimpleXMLElement)#7 (0) {
  25.  }
  26. }
  27. NULL
  28.  

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB