Gerr_ZINger
Новичок
Проблема с хинтами в связке AJAX + SOAP
Есть задача:
Сделать хинты, которые через AJAX подгружали с SOAP сервера/сервиса необходимую информацию. В моем случае это краткое оглавление книги.
Вот PHP функция формирования данных:
Вот часть AJAX:
вот код создание клиента
Код создания клиента инклудится во все скрипты.
Итого:
На хинты "наежать" не стоит
. Проверено сто раз сами(Даже с AJAX, но без SOAP) хинты работают отчлино.
SOAP отдельно отрабатывает без проблем.
Сформулирую проблему так:
Все отлично работает пока не поставить всё это творение в одну нехитрую ситуаци, а именно:
если побегать по Titl'am (см выше) и резка кликнут на любую ссылку, то
вылетает по таймауту
[pre]
Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\znsbook.ru\www\library.php on line 10
[/pre]
Как раз в этой строке написано нечто иное как $soapclient = new SoapClient(...);
Вот такая вот истроия
Думаю... стоит отметить что сам сервис и сайт лежат на одном сервере.
Также то, что если хотябы один хинт после аких жестких монипуляцы мы всётаки посмотрели, то переход на другую страницу выполняеться без проблем.
Мои мысли по поводу того как это вылечить кончились...
Прошу вас выссказать свое мнене.
Я же начал сомниваться в их(хинтах) надобности.
Есть задача:
Сделать хинты, которые через AJAX подгружали с SOAP сервера/сервиса необходимую информацию. В моем случае это краткое оглавление книги.
Вот PHP функция формирования данных:
PHP:
function get_book_contents_ajax($idbook)
{
global $user,$soapclient;
$html = "";
$contents = $soapclient->book_contents("!!! DEBUG !!!",$idbook);
$contents = parse_data($contents);
foreach($contents["name"] as $val)
$html .= $val."<br>";
return $html;
}
Код:
<script type="text/javascript">
<? sajax_show_javascript(); ?>
var cbuf = new Array(); //Буфер уже полученых данных
var lastbid = 0; //ID книги последнего запроса
var ajaxinprogress=false; //Запускался ли AJAX
function do_get_book_content_cb(z)
{
ajaxinprogress=false; //Ajax успешно отработал
hintbody = "<div style='font-weight:bold;'>Оглавление</div>";
if(z)
hintbody += unescape(z);
else
hintbody += "Оглавления нет";
dhint.innerHTML = hintbody; //Пишем в слой с хинтом данные
cbuf[lastbid] = dhint.innerHTML; //и в буфер
}
function do_get_book_content(bookid) //ВЫЗЫВАЕТЬСЯ НА OnMouseOver; примерно так <A href="..." onMouseOver="...">Title</a>
{
if(!cbuf[bookid]) //Если в буфере нет
{
if(!ajaxinprogress) //Если вызова АЯКС небыло
{
ajaxinprogress = true; //Стафим флаг - вызван
lastbid = bookid;
x_get_book_contents_ajax(bookid, do_get_book_content_cb); //AJAX ВЫЗОВ
}
else
if(lastbid!=bookid) //Если вызов был но не для текущей книги
{
sajax_cancel(); //Отменяем предидущий вызов
lastbid=bookid;
x_get_book_contents_ajax(bookid, do_get_book_content_cb); //AJAX ВЫЗОВ
}
showhint("Загрузка...");
}
else
showhint(cbuf[bookid]); //Выводим из буфера
}
function cancel_get_book_content() //ВЫЗЫВАЕТЬСЯ НА OnMouseOut;
{
if(ajaxinprogress) //Если есть АЯКС вызов
{
lastbid=0;
sajax_cancel(); //Отменяем
ajaxinprogress=false; //Говорим что нет :)
}
hidehint();//Прячем хинт
}
</script>
<!-- AJAX END -->
PHP:
if(!isset(soapclient))
try{
$soapclient = new SoapClient($WSDL,$SOAPPARAMS);
}
catch(SoapFult $e){
die("Невозможно установить соединение с сервисом $WSDL");
}
Итого:
На хинты "наежать" не стоит

SOAP отдельно отрабатывает без проблем.
Сформулирую проблему так:
Все отлично работает пока не поставить всё это творение в одну нехитрую ситуаци, а именно:
если побегать по Titl'am (см выше) и резка кликнут на любую ссылку, то
вылетает по таймауту
[pre]
Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\znsbook.ru\www\library.php on line 10
[/pre]
Как раз в этой строке написано нечто иное как $soapclient = new SoapClient(...);
Вот такая вот истроия

Думаю... стоит отметить что сам сервис и сайт лежат на одном сервере.
Также то, что если хотябы один хинт после аких жестких монипуляцы мы всётаки посмотрели, то переход на другую страницу выполняеться без проблем.
Мои мысли по поводу того как это вылечить кончились...

Прошу вас выссказать свое мнене.
Я же начал сомниваться в их(хинтах) надобности.