За последние 24 часа нас посетили 18434 программиста и 1606 роботов. Сейчас ищут 907 программистов ...

Наболело! одновременное выполнение скриптов

Тема в разделе "Прочие вопросы по PHP", создана пользователем chelobuster, 24 апр 2009.

  1. chelobuster

    chelobuster Активный пользователь

    С нами с:
    24 апр 2009
    Сообщения:
    2
    Симпатии:
    0
    Задача примитивна, но как решить - не знаю :(

    Исходные данные:
    OS - Windows 2003 Server
    Apache 2.2.11
    PHP 5.2.8 как модуль Апача

    есть php скрипт t.php с содержимым:
    Код (Text):
    1.  
    2. <?php
    3.  
    4.   for ($i = 1; $i <= 10; $i++)
    5.     sleep(1);
    6.  
    7. ?>
    если через браузер запускаю две версии скрипта http://127.0.0.1/t.php
    то первый отрабатывает через 10 секунд, а второй через 20, т.е. ждет пока закончит выполняться первый, и лишь потом стартует сам.

    Подскажите плз, как побороть сие ? чтоб скрипты работали независимо

    Спасибо.
     
  2. kas1e

    kas1e Активный пользователь

    С нами с:
    6 апр 2009
    Сообщения:
    280
    Симпатии:
    0
  3. chelobuster

    chelobuster Активный пользователь

    С нами с:
    24 апр 2009
    Сообщения:
    2
    Симпатии:
    0
    вообщем полная задача звучала так есть скрипт с ифреймами, в которых выводятся какие то данные со ссылками на подробности данных. например список деталей каких-то. при клике на деталь - открывается подробное описание в новом окне (хотб через таржет=бланк, хоть через джаваскрипт.виндов.опен).

    так вот, пока цуко все ифреймы не подгрузятся - при клике на ссылку с деталью - окно открывается, но инфа в него не загружается пока не закончат загружатся все ифреймы.

    Грешил на Апач, пхп, но похоже дело в мерзких браузерах.. т.к. если в процессе подгрузки ифреймов, насильно запустить еще одного Експлорера, и вставить туда ссылку на подробности детали - все чудно показывается.

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

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

    P.S. Не получилось :(


    Код (Text):
    1.  
    2. function getXmlHttp(){
    3.   var xmlhttp;
    4.   try {
    5.     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    6.   } catch (e) {
    7.     try {
    8.       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    9.     } catch (E) {
    10.       xmlhttp = false;
    11.     }
    12.   }
    13.   if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    14.     xmlhttp = new XMLHttpRequest();
    15.   }
    16.   return xmlhttp;
    17. }
    18.  
    19.  
    20. function get_items_data (obj_in_name, stockurl) {
    21. var xmlhttp = getXmlHttp()
    22. xmlhttp.open('GET', stockurl, true);
    23. xmlhttp.onreadystatechange = function() {
    24.   if (xmlhttp.readyState == 4) {
    25.      if(xmlhttp.status == 200) {
    26. //       alert(xmlhttp.responseText);
    27.       obj_in = document.getElementById(obj_in_name);
    28.       obj_in.innerHTML = xmlhttp.responseText;
    29.      }
    30.   }
    31. };
    32. xmlhttp.send(null);
    33. }

    Код (Text):
    1.     <div id="otherstocks" style="height: 365px; width: 100%; border: 1px solid red;"></div>
    2.     <div id="otherstocks1" style="height: 365px; width: 100%; border: 1px solid red;"></div>
    3.     <div id="otherstocks2" style="height: 365px; width: 100%; border: 1px solid red;"></div>
    4.  
    5.     <script language="javascript">get_items_data('otherstocks', '<?php urll('app/search/event/otherstocks'); ?>');</script>
    6.     <script language="javascript">get_items_data('otherstocks1', '<?php urll('app/search/event/otherstocks1'); ?>');</script>
    7.     <script language="javascript">get_items_data('otherstocks2', '<?php urll('app/search/event/otherstocks2'); ?>');</script>
    тоже все вызовы делаются последовательно, и до их загрузки в дочерних окнах браузера другие скрипты не стартуют :"(

    даже и не знаю что делать...[/code]
     
  4. Roker

    Roker Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    54
    Симпатии:
    0
    IE это гавно браузер. Как им вообще люди пользуются.

    XMLHttpRequest может выполнятся одновременно всего несколько запросов (2-3 вроде) если запустить больше они будут ждать друг друга

    Фреймы и новые окна работают абсолютно независимо.
    Я через фремы делал типа многопоточность. Запускал 10+ и нормуль
    А переключатся но новую вкладку пока одна дуплит так это чуть ли не кажный день так по инету лажу

    PS IE это такая программа с помошью которой можно зайти на http://opera.com и скачать себе браузер
     
  5. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    chelobuster
    держу пари, ты из Днепра?