Начну с самого начала.
Я создаю плагин для WordPress, который выполняет двойную функцию, так как его можно вставить в сообщение с помощью шорткода или добавить в качестве виджета боковой панели. Все, что он делает, это выводит некоторые js для выполнения запросов jquery.post в локальный php файл. Локальный php-файл запрашивает данные у веб-службы. (Я должен был сделать это таким образом, вместо того, чтобы напрямую запрашивать веб-сервис с помощью jquery.ajax, потому что URL содержит лицензионный ключ, который был бы общедоступным, если бы он был помещен в js).
В любом случае, когда я просматриваю страницу в блоге WordPress, на которой есть виджет боковой панели и вывод плагина с помощью шорткода, работает только один из запросов. Я имею в виду, что это работает в том, что он получает ответ от сценария php. Когда страница загружена, они оба работают нормально, когда вручную сообщают.
Просмотр веб-страницы -> отправить 2 почтовых запроса в мой php-скрипт -> оба элемента должны быть заполнены, но только один из них.
Мой PHP-скрипт просто:
<?php
if(isset($_POST["zip"])) {
// build a curl object, execute the request,
// and basically just echo what the curl request returns.
}
?>
Довольно простой.
вот некоторые js, которые некоторые хотели увидеть:
function widget_getActivities( zip ){
jQuery("#widget_active_list").text("");
jQuery.post("http://localhost/wordpress/wp-content/ActiveAjax.php", { zip: zip},
function(text) {
jQuery(text).find("asset").each(function(j, aval){
var html = "";
html += "<a href='" + jQuery(aval).find("trackback").text() + "' target='new'> " + jQuery(aval).find("assetName").text() + "</a><b> at </b>";
jQuery("location", aval).each(function(i, val){
html += jQuery("locationName", val).text() + " <b> on </b>";
});
jQuery("date", aval).each(function(){
html += jQuery("startDate", aval).text();
<!--jQuery("#widget_active_list").append("<div id='ActivityEntry'>" + html + " </div>");-->
jQuery("#widget_active_list")
.append(jQuery("<div>")
.addClass("widget_ActivityEntry")
.html(html)
.bind("mouseenter", function(){
jQuery(this).animate({ fontSize: "20px", lineHeight: "1.2em" }, 50);
})
.bind("mouseleave", function(){
jQuery(this).animate({ fontSize: "10px", lineHeight: "1.2em" }, 50);
})
);
});
});
});
}
Теперь представьте, что есть другая функция, идентичная этой, за исключением того, что все, что предшествует 'widget_', не добавлено. Эти две функции вызываются отдельно через:
jQuery(document).ready(function(){
w_zip = jQuery("#widget_zip").val();
widget_getActivities( w_zip );
jQuery("#widget_updateZipLink").click(function() { //start function when any update link is clicked
widget_c_zip = jQuery("#widget_zip").val();
if (undefined == widget_c_zip || widget_c_zip == "" || widget_c_zip.length != 5)
jQuery("#widget_zipError").text("Bad zip code");
else
widget_getActivities( widget_c_zip );
});
})
Я могу видеть в моих журналах apache, что оба запроса выполняются.
Я предполагаю, что это какое-то состояние гонки, но это не имеет никакого смысла.
Я новичок во всем этом, есть идеи?
РЕДАКТИРОВАТЬ: Я пришел к неоптимальному решению. У меня есть виджет, который определяет, используется ли плагин на странице, и если это так, то он ждет 3 секунды, прежде чем выполнить запрос. Но я чувствую, что это произойдет, если несколько клиентов одновременно выполнят запрос страницы, который вызовет один из запросов к моему php-скрипту, потому что я считаю, что проблема в php-скрипте, который страшен.