OracleセッションリストのHostおよびRequest_Uri

Oracleサーバー上のセッションのリストでWebからのリクエストの送信元を確認するには、PHP OCI8拡張機能に7行のコードを追加するだけで十分です。











ファイル



ext/oci8/oci8.c
      
      







はじめに



 #include "SAPI.h"
      
      







php_oci_do_connect関数に6行挿入します



  if (!connection) { RETURN_FALSE; } char* hostname = sapi_getenv("HTTP_HOST", 100 TSRMLS_CC); char* uri = sapi_getenv("REQUEST_URI", 100 TSRMLS_CC); char* reqid = sapi_getenv("HTTP_X_REQUEST_ID", 32 TSRMLS_CC); PHP_OCI_CALL_RETURN(OCI_G(errcode), OCIAttrSet, ((dvoid *) connection->session, (ub4) OCI_HTYPE_SESSION, (dvoid *) hostname, (ub4) strlen(hostname), (ub4) OCI_ATTR_MODULE, OCI_G(err))); PHP_OCI_CALL_RETURN(OCI_G(errcode), OCIAttrSet, ((dvoid *) connection->session, (ub4) OCI_HTYPE_SESSION, (dvoid *) uri, (ub4) strlen(uri), (ub4) OCI_ATTR_ACTION, OCI_G(err))); PHP_OCI_CALL_RETURN(OCI_G(errcode), OCIAttrSet, ((dvoid *) connection->session, (ub4) OCI_HTYPE_SESSION, (dvoid *) reqid, (ub4) strlen(reqid), (ub4) OCI_ATTR_CLIENT_INFO, OCI_G(err))); RETURN_RESOURCE(connection->rsrc_id);
      
      







モジュールとアクションは、V $ SESSIONだけでなく、V $ SQLAREAでも表示されます。 hostとrequest_uriに加えて、リクエストの一意のエンドツーエンド識別子を作成します。これは、nginxおよびapacheログでさらに追跡できます。



All Articles