Может ли $_SERVER['remote_port'] повлиять на успех запроса MySQL? ⇐ Php
Может ли $_SERVER['remote_port'] повлиять на успех запроса MySQL?
У меня возникла очень странная проблема с веб-сайтом электронной коммерции: некоторые запросы (но не все) на обновление статусов заказов не выполняются по какой-то загадочной причине.
При успешной оплате покупателем платежный шлюз вызывает в интернет-магазине php-скрипт, который должен обновить статус соответствующего заказа (с «ожидает» на «подтвержден»).
В некоторых случаях это работает, но не в других. Я заметил закономерность, согласно которой order_status_update() работает, когда URL-адрес обратного вызова вызывается с определенного IP-адреса (и соответствующего порта), но не с другого.
Я просмотрел код и снабдил его множеством журналов, и все было проверено вплоть до уровня запроса, но в одном случае это работает, а в другом — нет.
Единственная разница, которую я вижу:
[*]IP-адрес сервера, вызывающего сценарий обратного вызова, [*]удаленный порт сервера, вызывающего сценарий обратного вызова.
Насколько мне известно, $_SERVER['REMOTE_ADDR'] вызова не должен влиять на что-либо выполняемое (если, конечно, сценарий явно не делает что-то соответственно, а это не так), поэтому я' Мне интересно, может ли $_SERVER['REMOTE_PORT'] повлиять на MySQL/базу данных, что может привести к потенциальному сбою запроса?
Если сценарий/запрос выполнен успешно, REMOTE_PORT равен 18436, в случае сбоя REMOTE_PORT — 49495.
Я прикрепил журналы двух заказов: первый успешный, второй неудачный — вы можете видеть, что они фактически идентичны (за исключением order_id и mdate, как и ожидалось)
Когда это работает:
nab_notify - вызов order_status_update с помощью d[]=:Array\n(\n [order_id] => 2860\n [order_status] => C\n [notify_customer] => Y\n)\n ps_order::order_status_update - d[]=Array\n(\n [order_id] => 2860\n [order_status] => C\n [notify_customer] => Y\n)\n ps_order::order_status_update - curr_order_status: order_status:C notify_customer:1 ps_order::order_status_update - ОБНОВЛЕНИЕ vm_orders (1) w/fields[]=Array\n(\n [order_status] => C\n [mdate] => 1314093024\n)\n ps_order::order_status_update - ОБНОВЛЕНИЕ vm_orders (2) order_id:[2860] ps_order::order_status_update - UPDATE vm_orders (3) QUERY:[UPDATE `#__vm_orders` SET `order_status` = 'C',\n`mdate` = '1314093024'\nWHERE order_id='2860'] ps_order::order_status_update — ОБНОВЛЕНИЕ vm_orders (4) qresult:[1] Когда это не работает:
nab_notify - вызов order_status_update с помощью d[]=:Array\n(\n [order_id] => 2863\n [order_status] => C\n [notify_customer] => Y\n)\n ps_order::order_status_update - d[]=Array\n(\n [order_id] => 2863\n [order_status] => C\n [notify_customer] => Y\n)\n ps_order::order_status_update - curr_order_status: order_status:C notify_customer:1 ps_order::order_status_update - ОБНОВЛЕНИЕ vm_orders (1) w/fields[]=Array\n(\n [order_status] => C\n [mdate] => 1314137858\n)\n ps_order::order_status_update - ОБНОВЛЕНИЕ vm_orders (2) order_id:[2863] ps_order::order_status_update - UPDATE vm_orders (3) QUERY:[UPDATE `#__vm_orders` SET `order_status` = 'C',\n`mdate` = '1314137858'\nWHERE order_id='2863'] ps_order::order_status_update — ОБНОВЛЕНИЕ vm_orders (4) qresult:[0] Принимая во внимание «один и тот же» запрос, может ли кто-нибудь пролить свет на то, почему один потерпит неудачу, а другой преуспеет?
Спасибо, Эрик
ОБНОВЛЕНИЕ 1. Я добавил ведение журнала на уровне запроса и обнаружил некоторые ошибки, которые показывают журналы:
ОШИБКА 2006 – сервер MySQL исчез
... но, как ни странно, не для всех запросов в рамках этого конкретного сеанса (думаете, это обнадеживает?). Я оставил разрывы строк в трассировках на случай, если они имеют значение.
После пары поисков и других сообщений на форуме я проверил настройки PHP и увидел
max_execution_time = 60 максимальное_входное_время = 60 какого времени должно быть достаточно?
Странно то, что это происходит только тогда, когда запрос к определенному URL-адресу выполняется с определенного IP-адреса (на этот раз того же IP-адреса, что и в случае, когда статусы других заказов не обновлялись).
2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=SELECT `order_number`, `user_id`, `order_subtotal`, `order_total`, `order_currency`, `order_tax`, 'order_status', `order_shipping_tax`, `coupon_discount`, `order_discount` ИЗ `jos_vm_orders` ГДЕ `order_id`='2868' 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез. SQL=SELECT `order_number`, `user_id`, `order_subtotal`, `order_total`, `order_currency`, `order_tax`, 'order_status', `order_shipping_tax`, `coupon_discount`, `order_discount` ИЗ `jos_vm_orders` ГДЕ `order_id`='2868' 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=SELECT user_id,order_total,order_status ИЗ jos_vm_orders ГДЕ jos_vm_orders.order_id='2868' 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез. SQL=SELECT user_id,order_total,order_status FROM jos_vm_orders WHERE jos_vm_orders.order_id='2868' 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=UPDATE `jos_vm_orders` SET `order_status` = 'C', `mdate` = '1314240914' ГДЕ order_id='2868' 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез. SQL=UPDATE `jos_vm_orders` SET `order_status` = 'C', `mdate` = '1314240914' ГДЕ order_id='2868' 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=INSERT INTO `jos_vm_order_history` (`order_id`, `order_status_code`, `date_added`, `customer_notified`, `комментарии`) ЗНАЧЕНИЯ ( '2868' ,'С' ,'2011-08-25 12:25:14' ,'1' ,'' ) 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез. SQL=INSERT INTO `jos_vm_order_history` (`order_id`, `order_status_code`, `date_added`, `customer_notified`, `комментарии`) ЗНАЧЕНИЯ ( '2868' ,'С' ,'2011-08-25 12:25:14' ,'1' ,'' ) 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=SELECT order_item_id, event_reg_id FROM jos_vm_order_item ГДЕ order_id=2868 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез SQL=SELECT order_item_id, event_reg_id FROM jos_vm_order_item WHERE order_id=2868 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=SELECT id FROM jos_menu WHERE link='index.php?option=com_virtuemart' И опубликовано=1 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез. SQL=SELECT id FROM jos_menu WHERE link='index.php?option=com_virtuemart' ANDPublished=1 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=SELECTvendor_name,contact_email FROM jos_vm_vendor WHEREvendor_id='1' 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез. SQL=SELECTvendor_name,contact_email FROM jos_vm_vendor WHEREvendor_id='1' 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=SELECT first_name,last_name,user_email,order_status_name,country,order_currency FROM jos_vm_order_user_info,jos_vm_orders,jos_vm_order_status ГДЕ jos_vm_orders.order_id = '2868' И jos_ vm_orders.user_id = jos_vm_order_user_info .user_id И jos_vm_orders.order_id = jos_vm_order_user_info.order_id И order_status = order_status_code 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез _info.user_id И jos_vm_orders.order_id = jos_vm_order_user_info. идентификатор_заказа И статус_заказа = код_статуса_заказа
У меня возникла очень странная проблема с веб-сайтом электронной коммерции: некоторые запросы (но не все) на обновление статусов заказов не выполняются по какой-то загадочной причине.
При успешной оплате покупателем платежный шлюз вызывает в интернет-магазине php-скрипт, который должен обновить статус соответствующего заказа (с «ожидает» на «подтвержден»).
В некоторых случаях это работает, но не в других. Я заметил закономерность, согласно которой order_status_update() работает, когда URL-адрес обратного вызова вызывается с определенного IP-адреса (и соответствующего порта), но не с другого.
Я просмотрел код и снабдил его множеством журналов, и все было проверено вплоть до уровня запроса, но в одном случае это работает, а в другом — нет.
Единственная разница, которую я вижу:
[*]IP-адрес сервера, вызывающего сценарий обратного вызова, [*]удаленный порт сервера, вызывающего сценарий обратного вызова.
Насколько мне известно, $_SERVER['REMOTE_ADDR'] вызова не должен влиять на что-либо выполняемое (если, конечно, сценарий явно не делает что-то соответственно, а это не так), поэтому я' Мне интересно, может ли $_SERVER['REMOTE_PORT'] повлиять на MySQL/базу данных, что может привести к потенциальному сбою запроса?
Если сценарий/запрос выполнен успешно, REMOTE_PORT равен 18436, в случае сбоя REMOTE_PORT — 49495.
Я прикрепил журналы двух заказов: первый успешный, второй неудачный — вы можете видеть, что они фактически идентичны (за исключением order_id и mdate, как и ожидалось)
Когда это работает:
nab_notify - вызов order_status_update с помощью d[]=:Array\n(\n [order_id] => 2860\n [order_status] => C\n [notify_customer] => Y\n)\n ps_order::order_status_update - d[]=Array\n(\n [order_id] => 2860\n [order_status] => C\n [notify_customer] => Y\n)\n ps_order::order_status_update - curr_order_status: order_status:C notify_customer:1 ps_order::order_status_update - ОБНОВЛЕНИЕ vm_orders (1) w/fields[]=Array\n(\n [order_status] => C\n [mdate] => 1314093024\n)\n ps_order::order_status_update - ОБНОВЛЕНИЕ vm_orders (2) order_id:[2860] ps_order::order_status_update - UPDATE vm_orders (3) QUERY:[UPDATE `#__vm_orders` SET `order_status` = 'C',\n`mdate` = '1314093024'\nWHERE order_id='2860'] ps_order::order_status_update — ОБНОВЛЕНИЕ vm_orders (4) qresult:[1] Когда это не работает:
nab_notify - вызов order_status_update с помощью d[]=:Array\n(\n [order_id] => 2863\n [order_status] => C\n [notify_customer] => Y\n)\n ps_order::order_status_update - d[]=Array\n(\n [order_id] => 2863\n [order_status] => C\n [notify_customer] => Y\n)\n ps_order::order_status_update - curr_order_status: order_status:C notify_customer:1 ps_order::order_status_update - ОБНОВЛЕНИЕ vm_orders (1) w/fields[]=Array\n(\n [order_status] => C\n [mdate] => 1314137858\n)\n ps_order::order_status_update - ОБНОВЛЕНИЕ vm_orders (2) order_id:[2863] ps_order::order_status_update - UPDATE vm_orders (3) QUERY:[UPDATE `#__vm_orders` SET `order_status` = 'C',\n`mdate` = '1314137858'\nWHERE order_id='2863'] ps_order::order_status_update — ОБНОВЛЕНИЕ vm_orders (4) qresult:[0] Принимая во внимание «один и тот же» запрос, может ли кто-нибудь пролить свет на то, почему один потерпит неудачу, а другой преуспеет?
Спасибо, Эрик
ОБНОВЛЕНИЕ 1. Я добавил ведение журнала на уровне запроса и обнаружил некоторые ошибки, которые показывают журналы:
ОШИБКА 2006 – сервер MySQL исчез
... но, как ни странно, не для всех запросов в рамках этого конкретного сеанса (думаете, это обнадеживает?). Я оставил разрывы строк в трассировках на случай, если они имеют значение.
После пары поисков и других сообщений на форуме я проверил настройки PHP и увидел
max_execution_time = 60 максимальное_входное_время = 60 какого времени должно быть достаточно?
Странно то, что это происходит только тогда, когда запрос к определенному URL-адресу выполняется с определенного IP-адреса (на этот раз того же IP-адреса, что и в случае, когда статусы других заказов не обновлялись).
2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=SELECT `order_number`, `user_id`, `order_subtotal`, `order_total`, `order_currency`, `order_tax`, 'order_status', `order_shipping_tax`, `coupon_discount`, `order_discount` ИЗ `jos_vm_orders` ГДЕ `order_id`='2868' 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез. SQL=SELECT `order_number`, `user_id`, `order_subtotal`, `order_total`, `order_currency`, `order_tax`, 'order_status', `order_shipping_tax`, `coupon_discount`, `order_discount` ИЗ `jos_vm_orders` ГДЕ `order_id`='2868' 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=SELECT user_id,order_total,order_status ИЗ jos_vm_orders ГДЕ jos_vm_orders.order_id='2868' 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез. SQL=SELECT user_id,order_total,order_status FROM jos_vm_orders WHERE jos_vm_orders.order_id='2868' 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=UPDATE `jos_vm_orders` SET `order_status` = 'C', `mdate` = '1314240914' ГДЕ order_id='2868' 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез. SQL=UPDATE `jos_vm_orders` SET `order_status` = 'C', `mdate` = '1314240914' ГДЕ order_id='2868' 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=INSERT INTO `jos_vm_order_history` (`order_id`, `order_status_code`, `date_added`, `customer_notified`, `комментарии`) ЗНАЧЕНИЯ ( '2868' ,'С' ,'2011-08-25 12:25:14' ,'1' ,'' ) 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез. SQL=INSERT INTO `jos_vm_order_history` (`order_id`, `order_status_code`, `date_added`, `customer_notified`, `комментарии`) ЗНАЧЕНИЯ ( '2868' ,'С' ,'2011-08-25 12:25:14' ,'1' ,'' ) 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=SELECT order_item_id, event_reg_id FROM jos_vm_order_item ГДЕ order_id=2868 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез SQL=SELECT order_item_id, event_reg_id FROM jos_vm_order_item WHERE order_id=2868 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=SELECT id FROM jos_menu WHERE link='index.php?option=com_virtuemart' И опубликовано=1 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез. SQL=SELECT id FROM jos_menu WHERE link='index.php?option=com_virtuemart' ANDPublished=1 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=SELECTvendor_name,contact_email FROM jos_vm_vendor WHEREvendor_id='1' 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез. SQL=SELECTvendor_name,contact_email FROM jos_vm_vendor WHEREvendor_id='1' 2011-08-25 02:54:48 - JDatabaseMySQL::query - SQL=SELECT first_name,last_name,user_email,order_status_name,country,order_currency FROM jos_vm_order_user_info,jos_vm_orders,jos_vm_order_status ГДЕ jos_vm_orders.order_id = '2868' И jos_ vm_orders.user_id = jos_vm_order_user_info .user_id И jos_vm_orders.order_id = jos_vm_order_user_info.order_id И order_status = order_status_code 2011-08-25 02:54:48 - JDatabaseMySQL::query - !!!! ОШИБКА !!!! 2006 — сервер MySQL исчез _info.user_id И jos_vm_orders.order_id = jos_vm_order_user_info. идентификатор_заказа И статус_заказа = код_статуса_заказа
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Не удалось разрешить заполнитель «server.port» в значении «${server.port}».
Anonymous » » в форуме JAVA - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Не удалось разрешить Placeholder 'server.port' in value "$ {server.port}"
Anonymous » » в форуме JAVA - 0 Ответы
- 36 Просмотры
-
Последнее сообщение Anonymous
-
-
-
В чем разница между настройкой server.port = 0 vs server.port = -1 в Application.properties?
Anonymous » » в форуме JAVA - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Не удалось разрешить Placeholder 'server.port' in value "$ {server.port}"
Anonymous » » в форуме JAVA - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-