diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 0ba0d3b5f..de39bd31e 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -28,13 +28,19 @@ RUN groupadd --gid $USER_GID $USERNAME \ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone -RUN apt update && apt install -y apt-utils gcc g++ gdb pkg-config libxml2-dev libsqlite3-dev libcurl4-openssl-dev zlib1g-dev make cmake wget autoconf git clangd iputils-ping python3 python3.8-venv python3-pip clang-format protobuf-compiler vim +RUN apt update && apt install -y apt-utils gcc g++ gdb pkg-config libxml2-dev libsqlite3-dev libcurl4-openssl-dev zlib1g-dev make cmake wget autoconf git clangd iputils-ping python3 python3.8-venv python3-pip clang-format protobuf-compiler vim locales curl libssl-dev +# https://github.com/git-lfs/git-lfs/blob/main/INSTALLING.md +RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash +RUN apt-get install git-lfs +USER pinpoint # enable php-7.4 ENV PHP_VESION=php-7.4.33 -COPY ${PHP_VESION}.tar.gz /repo/${PHP_VESION}.tar.gz -RUN cd /repo && tar xvf ${PHP_VESION}.tar.gz && cd ${PHP_VESION} && ./configure --prefix=/opt/${PHP_VESION} --enable-fpm --enable-opcache --enable-debug && make -j && make install -ENV PATH="$PATH:/opt/php/bin/:/opt/php/sbin/" -COPY php.ini /opt/$PHP_VESION/lib +ENV PHP_HOME=/home/pinpoint/local/ +COPY ${PHP_VESION}.tar.gz /home/pinpoint/${PHP_VESION}.tar.gz +RUN cd /home/pinpoint/ && tar xvf ${PHP_VESION}.tar.gz && cd ${PHP_VESION} && ./configure --prefix=${PHP_HOME}/${PHP_VESION} --with-curl=shared --with-mysqli=shared --with-openssl=shared --with-pdo-sqlite=shared --enable-pdo=shared --with-zlib=shared --enable-fpm --enable-opcache --enable-debug && make -j && make install + +ENV PATH="$PATH:${PHP_HOME}/php/bin/:${PHP_HOME}/php/sbin/" +COPY php.ini ${PHP_HOME}/php/lib ### Build php module ### curl @@ -62,9 +68,9 @@ COPY php.ini /opt/$PHP_VESION/lib # install golang 1.18 -COPY go1.18.10.linux-amd64.tar.gz /repo/go1.18.10.linux-amd64.tar.gz -RUN rm -rf /usr/local/go && cd /repo/ && tar -C /usr/local -xzf go1.18.10.linux-amd64.tar.gz +USER root +COPY go1.18.10.linux-amd64.tar.gz /home/pinpoint/go1.18.10.linux-amd64.tar.gz +RUN rm -rf /usr/local/go && cd /home/pinpoint/ && tar -C /usr/local -xzf go1.18.10.linux-amd64.tar.gz ENV PATH=$PATH:/usr/local/go/bin -ENV GO_PATH=~/go -ENV PATH=$PATH:/$GO_PATH/bin -RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@latest && go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest \ No newline at end of file +ENV PATH=$PATH:$GO_PATH/bin +RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 && go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2 \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 932ba927a..efa31fa16 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -39,6 +39,8 @@ "matepek.vscode-catch2-test-adapter", "adam-bender.commit-message-editor", "formulahendry.vscode-mysql", - "ms-python.autopep8" + "ms-python.autopep8", + "streetsidesoftware.code-spell-checker", + "jeff-hykin.better-dockerfile-syntax" ] } \ No newline at end of file diff --git a/.devcontainer/php.ini b/.devcontainer/php.ini deleted file mode 100644 index fdc7e869e..000000000 --- a/.devcontainer/php.ini +++ /dev/null @@ -1,1949 +0,0 @@ -[PHP] - -;;;;;;;;;;;;;;;;;;; -; About php.ini ; -;;;;;;;;;;;;;;;;;;; -; PHP's initialization file, generally called php.ini, is responsible for -; configuring many of the aspects of PHP's behavior. - -; PHP attempts to find and load this configuration from a number of locations. -; The following is a summary of its search order: -; 1. SAPI module specific location. -; 2. The PHPRC environment variable. (As of PHP 5.2.0) -; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) -; 4. Current working directory (except CLI) -; 5. The web server's directory (for SAPI modules), or directory of PHP -; (otherwise in Windows) -; 6. The directory from the --with-config-file-path compile time option, or the -; Windows directory (usually C:\windows) -; See the PHP docs for more specific information. -; http://php.net/configuration.file - -; The syntax of the file is extremely simple. Whitespace and lines -; beginning with a semicolon are silently ignored (as you probably guessed). -; Section headers (e.g. [Foo]) are also silently ignored, even though -; they might mean something in the future. - -; Directives following the section heading [PATH=/www/mysite] only -; apply to PHP files in the /www/mysite directory. Directives -; following the section heading [HOST=www.example.com] only apply to -; PHP files served from www.example.com. Directives set in these -; special sections cannot be overridden by user-defined INI files or -; at runtime. Currently, [PATH=] and [HOST=] sections only work under -; CGI/FastCGI. -; http://php.net/ini.sections - -; Directives are specified using the following syntax: -; directive = value -; Directive names are *case sensitive* - foo=bar is different from FOO=bar. -; Directives are variables used to configure PHP or PHP extensions. -; There is no name validation. If PHP can't find an expected -; directive because it is not set or is mistyped, a default value will be used. - -; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one -; of the INI constants (On, Off, True, False, Yes, No and None) or an expression -; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a -; previously set variable or directive (e.g. ${foo}) - -; Expressions in the INI file are limited to bitwise operators and parentheses: -; | bitwise OR -; ^ bitwise XOR -; & bitwise AND -; ~ bitwise NOT -; ! boolean NOT - -; Boolean flags can be turned on using the values 1, On, True or Yes. -; They can be turned off using the values 0, Off, False or No. - -; An empty string can be denoted by simply not writing anything after the equal -; sign, or by using the None keyword: - -; foo = ; sets foo to an empty string -; foo = None ; sets foo to an empty string -; foo = "None" ; sets foo to the string 'None' - -; If you use constants in your value, and these constants belong to a -; dynamically loaded extension (either a PHP extension or a Zend extension), -; you may only use these constants *after* the line that loads the extension. - -;;;;;;;;;;;;;;;;;;; -; About this file ; -;;;;;;;;;;;;;;;;;;; -; PHP comes packaged with two INI files. One that is recommended to be used -; in production environments and one that is recommended to be used in -; development environments. - -; php.ini-production contains settings which hold security, performance and -; best practices at its core. But please be aware, these settings may break -; compatibility with older or less security conscience applications. We -; recommending using the production ini in production and testing environments. - -; php.ini-development is very similar to its production variant, except it is -; much more verbose when it comes to errors. We recommend using the -; development version only in development environments, as errors shown to -; application users can inadvertently leak otherwise secure information. - -; This is the php.ini-development INI file. - -;;;;;;;;;;;;;;;;;;; -; Quick Reference ; -;;;;;;;;;;;;;;;;;;; -; The following are all the settings which are different in either the production -; or development versions of the INIs with respect to PHP's default behavior. -; Please see the actual settings later in the document for more details as to why -; we recommend these changes in PHP's behavior. - -; display_errors -; Default Value: On -; Development Value: On -; Production Value: Off - -; display_startup_errors -; Default Value: Off -; Development Value: On -; Production Value: Off - -; error_reporting -; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED -; Development Value: E_ALL -; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT - -; log_errors -; Default Value: Off -; Development Value: On -; Production Value: On - -; max_input_time -; Default Value: -1 (Unlimited) -; Development Value: 60 (60 seconds) -; Production Value: 60 (60 seconds) - -; output_buffering -; Default Value: Off -; Development Value: 4096 -; Production Value: 4096 - -; register_argc_argv -; Default Value: On -; Development Value: Off -; Production Value: Off - -; request_order -; Default Value: None -; Development Value: "GP" -; Production Value: "GP" - -; session.gc_divisor -; Default Value: 100 -; Development Value: 1000 -; Production Value: 1000 - -; session.sid_bits_per_character -; Default Value: 4 -; Development Value: 5 -; Production Value: 5 - -; short_open_tag -; Default Value: On -; Development Value: Off -; Production Value: Off - -; variables_order -; Default Value: "EGPCS" -; Development Value: "GPCS" -; Production Value: "GPCS" - -;;;;;;;;;;;;;;;;;;;; -; php.ini Options ; -;;;;;;;;;;;;;;;;;;;; -; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini" -;user_ini.filename = ".user.ini" - -; To disable this feature set this option to an empty value -;user_ini.filename = - -; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes) -;user_ini.cache_ttl = 300 - -;;;;;;;;;;;;;;;;;;;; -; Language Options ; -;;;;;;;;;;;;;;;;;;;; - -; Enable the PHP scripting language engine under Apache. -; http://php.net/engine -engine = On - -; This directive determines whether or not PHP will recognize code between -; tags as PHP source which should be processed as such. It is -; generally recommended that should be used and that this feature -; should be disabled, as enabling it may result in issues when generating XML -; documents, however this remains supported for backward compatibility reasons. -; Note that this directive does not control the would work. -; http://php.net/syntax-highlighting -;highlight.string = #DD0000 -;highlight.comment = #FF9900 -;highlight.keyword = #007700 -;highlight.default = #0000BB -;highlight.html = #000000 - -; If enabled, the request will be allowed to complete even if the user aborts -; the request. Consider enabling it if executing long requests, which may end up -; being interrupted by the user or a browser timing out. PHP's default behavior -; is to disable this feature. -; http://php.net/ignore-user-abort -;ignore_user_abort = On - -; Determines the size of the realpath cache to be used by PHP. This value should -; be increased on systems where PHP opens many files to reflect the quantity of -; the file operations performed. -; Note: if open_basedir is set, the cache is disabled -; http://php.net/realpath-cache-size -;realpath_cache_size = 4096k - -; Duration of time, in seconds for which to cache realpath information for a given -; file or directory. For systems with rarely changing files, consider increasing this -; value. -; http://php.net/realpath-cache-ttl -;realpath_cache_ttl = 120 - -; Enables or disables the circular reference collector. -; http://php.net/zend.enable-gc -zend.enable_gc = On - -; If enabled, scripts may be written in encodings that are incompatible with -; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such -; encodings. To use this feature, mbstring extension must be enabled. -; Default: Off -;zend.multibyte = Off - -; Allows to set the default encoding for the scripts. This value will be used -; unless "declare(encoding=...)" directive appears at the top of the script. -; Only affects if zend.multibyte is set. -; Default: "" -;zend.script_encoding = - -; Allows to include or exclude arguments from stack traces generated for exceptions. -; In production, it is recommended to turn this setting on to prohibit the output -; of sensitive information in stack traces -; Default: Off -zend.exception_ignore_args = Off - -;;;;;;;;;;;;;;;;; -; Miscellaneous ; -;;;;;;;;;;;;;;;;; - -; Decides whether PHP may expose the fact that it is installed on the server -; (e.g. by adding its signature to the Web server header). It is no security -; threat in any way, but it makes it possible to determine whether you use PHP -; on your server or not. -; http://php.net/expose-php -expose_php = On - -;;;;;;;;;;;;;;;;;;; -; Resource Limits ; -;;;;;;;;;;;;;;;;;;; - -; Maximum execution time of each script, in seconds -; http://php.net/max-execution-time -; Note: This directive is hardcoded to 0 for the CLI SAPI -max_execution_time = 30 - -; Maximum amount of time each script may spend parsing request data. It's a good -; idea to limit this time on productions servers in order to eliminate unexpectedly -; long running scripts. -; Note: This directive is hardcoded to -1 for the CLI SAPI -; Default Value: -1 (Unlimited) -; Development Value: 60 (60 seconds) -; Production Value: 60 (60 seconds) -; http://php.net/max-input-time -max_input_time = 60 - -; Maximum input variable nesting level -; http://php.net/max-input-nesting-level -;max_input_nesting_level = 64 - -; How many GET/POST/COOKIE input variables may be accepted -;max_input_vars = 1000 - -; Maximum amount of memory a script may consume -; http://php.net/memory-limit -memory_limit = 128M - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Error handling and logging ; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -; This directive informs PHP of which errors, warnings and notices you would like -; it to take action for. The recommended way of setting values for this -; directive is through the use of the error level constants and bitwise -; operators. The error level constants are below here for convenience as well as -; some common settings and their meanings. -; By default, PHP is set to take action on all errors, notices and warnings EXCEPT -; those related to E_NOTICE and E_STRICT, which together cover best practices and -; recommended coding standards in PHP. For performance reasons, this is the -; recommend error reporting setting. Your production server shouldn't be wasting -; resources complaining about best practices and coding standards. That's what -; development servers and development settings are for. -; Note: The php.ini-development file has this setting as E_ALL. This -; means it pretty much reports everything which is exactly what you want during -; development and early testing. -; -; Error Level Constants: -; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) -; E_ERROR - fatal run-time errors -; E_RECOVERABLE_ERROR - almost fatal run-time errors -; E_WARNING - run-time warnings (non-fatal errors) -; E_PARSE - compile-time parse errors -; E_NOTICE - run-time notices (these are warnings which often result -; from a bug in your code, but it's possible that it was -; intentional (e.g., using an uninitialized variable and -; relying on the fact it is automatically initialized to an -; empty string) -; E_STRICT - run-time notices, enable to have PHP suggest changes -; to your code which will ensure the best interoperability -; and forward compatibility of your code -; E_CORE_ERROR - fatal errors that occur during PHP's initial startup -; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's -; initial startup -; E_COMPILE_ERROR - fatal compile-time errors -; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) -; E_USER_ERROR - user-generated error message -; E_USER_WARNING - user-generated warning message -; E_USER_NOTICE - user-generated notice message -; E_DEPRECATED - warn about code that will not work in future versions -; of PHP -; E_USER_DEPRECATED - user-generated deprecation warnings -; -; Common Values: -; E_ALL (Show all errors, warnings and notices including coding standards.) -; E_ALL & ~E_NOTICE (Show all errors, except for notices) -; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.) -; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) -; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED -; Development Value: E_ALL -; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT -; http://php.net/error-reporting -error_reporting = E_ALL - -; This directive controls whether or not and where PHP will output errors, -; notices and warnings too. Error output is very useful during development, but -; it could be very dangerous in production environments. Depending on the code -; which is triggering the error, sensitive information could potentially leak -; out of your application such as database usernames and passwords or worse. -; For production environments, we recommend logging errors rather than -; sending them to STDOUT. -; Possible Values: -; Off = Do not display any errors -; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) -; On or stdout = Display errors to STDOUT -; Default Value: On -; Development Value: On -; Production Value: Off -; http://php.net/display-errors -display_errors = On - -; The display of errors which occur during PHP's startup sequence are handled -; separately from display_errors. PHP's default behavior is to suppress those -; errors from clients. Turning the display of startup errors on can be useful in -; debugging configuration problems. We strongly recommend you -; set this to 'off' for production servers. -; Default Value: Off -; Development Value: On -; Production Value: Off -; http://php.net/display-startup-errors -display_startup_errors = On - -; Besides displaying errors, PHP can also log errors to locations such as a -; server-specific log, STDERR, or a location specified by the error_log -; directive found below. While errors should not be displayed on productions -; servers they should still be monitored and logging is a great way to do that. -; Default Value: Off -; Development Value: On -; Production Value: On -; http://php.net/log-errors -log_errors = On - -; Set maximum length of log_errors. In error_log information about the source is -; added. The default is 1024 and 0 allows to not apply any maximum length at all. -; http://php.net/log-errors-max-len -log_errors_max_len = 1024 - -; Do not log repeated messages. Repeated errors must occur in same file on same -; line unless ignore_repeated_source is set true. -; http://php.net/ignore-repeated-errors -ignore_repeated_errors = Off - -; Ignore source of message when ignoring repeated messages. When this setting -; is On you will not log errors with repeated messages from different files or -; source lines. -; http://php.net/ignore-repeated-source -ignore_repeated_source = Off - -; If this parameter is set to Off, then memory leaks will not be shown (on -; stdout or in the log). This is only effective in a debug compile, and if -; error reporting includes E_WARNING in the allowed list -; http://php.net/report-memleaks -report_memleaks = On - -; This setting is on by default. -;report_zend_debug = 0 - -; Store the last error/warning message in $php_errormsg (boolean). Setting this value -; to On can assist in debugging and is appropriate for development servers. It should -; however be disabled on production servers. -; This directive is DEPRECATED. -; Default Value: Off -; Development Value: Off -; Production Value: Off -; http://php.net/track-errors -;track_errors = Off - -; Turn off normal error reporting and emit XML-RPC error XML -; http://php.net/xmlrpc-errors -;xmlrpc_errors = 0 - -; An XML-RPC faultCode -;xmlrpc_error_number = 0 - -; When PHP displays or logs an error, it has the capability of formatting the -; error message as HTML for easier reading. This directive controls whether -; the error message is formatted as HTML or not. -; Note: This directive is hardcoded to Off for the CLI SAPI -; http://php.net/html-errors -;html_errors = On - -; If html_errors is set to On *and* docref_root is not empty, then PHP -; produces clickable error messages that direct to a page describing the error -; or function causing the error in detail. -; You can download a copy of the PHP manual from http://php.net/docs -; and change docref_root to the base URL of your local copy including the -; leading '/'. You must also specify the file extension being used including -; the dot. PHP's default behavior is to leave these settings empty, in which -; case no links to documentation are generated. -; Note: Never use this feature for production boxes. -; http://php.net/docref-root -; Examples -;docref_root = "/phpmanual/" - -; http://php.net/docref-ext -;docref_ext = .html - -; String to output before an error message. PHP's default behavior is to leave -; this setting blank. -; http://php.net/error-prepend-string -; Example: -;error_prepend_string = "" - -; String to output after an error message. PHP's default behavior is to leave -; this setting blank. -; http://php.net/error-append-string -; Example: -;error_append_string = "" - -; Log errors to specified file. PHP's default behavior is to leave this value -; empty. -; http://php.net/error-log -; Example: -;error_log = php_errors.log -; Log errors to syslog (Event Log on Windows). -;error_log = syslog - -; The syslog ident is a string which is prepended to every message logged -; to syslog. Only used when error_log is set to syslog. -;syslog.ident = php - -; The syslog facility is used to specify what type of program is logging -; the message. Only used when error_log is set to syslog. -;syslog.facility = user - -; Set this to disable filtering control characters (the default). -; Some loggers only accept NVT-ASCII, others accept anything that's not -; control characters. If your logger accepts everything, then no filtering -; is needed at all. -; Allowed values are: -; ascii (all printable ASCII characters and NL) -; no-ctrl (all characters except control characters) -; all (all characters) -; raw (like "all", but messages are not split at newlines) -; http://php.net/syslog.filter -;syslog.filter = ascii - -;windows.show_crt_warning -; Default value: 0 -; Development value: 0 -; Production value: 0 - -;;;;;;;;;;;;;;;;; -; Data Handling ; -;;;;;;;;;;;;;;;;; - -; The separator used in PHP generated URLs to separate arguments. -; PHP's default setting is "&". -; http://php.net/arg-separator.output -; Example: -;arg_separator.output = "&" - -; List of separator(s) used by PHP to parse input URLs into variables. -; PHP's default setting is "&". -; NOTE: Every character in this directive is considered as separator! -; http://php.net/arg-separator.input -; Example: -;arg_separator.input = ";&" - -; This directive determines which super global arrays are registered when PHP -; starts up. G,P,C,E & S are abbreviations for the following respective super -; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty -; paid for the registration of these arrays and because ENV is not as commonly -; used as the others, ENV is not recommended on productions servers. You -; can still get access to the environment variables through getenv() should you -; need to. -; Default Value: "EGPCS" -; Development Value: "GPCS" -; Production Value: "GPCS"; -; http://php.net/variables-order -variables_order = "GPCS" - -; This directive determines which super global data (G,P & C) should be -; registered into the super global array REQUEST. If so, it also determines -; the order in which that data is registered. The values for this directive -; are specified in the same manner as the variables_order directive, -; EXCEPT one. Leaving this value empty will cause PHP to use the value set -; in the variables_order directive. It does not mean it will leave the super -; globals array REQUEST empty. -; Default Value: None -; Development Value: "GP" -; Production Value: "GP" -; http://php.net/request-order -request_order = "GP" - -; This directive determines whether PHP registers $argv & $argc each time it -; runs. $argv contains an array of all the arguments passed to PHP when a script -; is invoked. $argc contains an integer representing the number of arguments -; that were passed when the script was invoked. These arrays are extremely -; useful when running scripts from the command line. When this directive is -; enabled, registering these variables consumes CPU cycles and memory each time -; a script is executed. For performance reasons, this feature should be disabled -; on production servers. -; Note: This directive is hardcoded to On for the CLI SAPI -; Default Value: On -; Development Value: Off -; Production Value: Off -; http://php.net/register-argc-argv -register_argc_argv = Off - -; When enabled, the ENV, REQUEST and SERVER variables are created when they're -; first used (Just In Time) instead of when the script starts. If these -; variables are not used within a script, having this directive on will result -; in a performance gain. The PHP directive register_argc_argv must be disabled -; for this directive to have any effect. -; http://php.net/auto-globals-jit -auto_globals_jit = On - -; Whether PHP will read the POST data. -; This option is enabled by default. -; Most likely, you won't want to disable this option globally. It causes $_POST -; and $_FILES to always be empty; the only way you will be able to read the -; POST data will be through the php://input stream wrapper. This can be useful -; to proxy requests or to process the POST data in a memory efficient fashion. -; http://php.net/enable-post-data-reading -;enable_post_data_reading = Off - -; Maximum size of POST data that PHP will accept. -; Its value may be 0 to disable the limit. It is ignored if POST data reading -; is disabled through enable_post_data_reading. -; http://php.net/post-max-size -post_max_size = 8M - -; Automatically add files before PHP document. -; http://php.net/auto-prepend-file -auto_prepend_file = - -; Automatically add files after PHP document. -; http://php.net/auto-append-file -auto_append_file = - -; By default, PHP will output a media type using the Content-Type header. To -; disable this, simply set it to be empty. -; -; PHP's built-in default media type is set to text/html. -; http://php.net/default-mimetype -default_mimetype = "text/html" - -; PHP's default character set is set to UTF-8. -; http://php.net/default-charset -default_charset = "UTF-8" - -; PHP internal character encoding is set to empty. -; If empty, default_charset is used. -; http://php.net/internal-encoding -;internal_encoding = - -; PHP input character encoding is set to empty. -; If empty, default_charset is used. -; http://php.net/input-encoding -;input_encoding = - -; PHP output character encoding is set to empty. -; If empty, default_charset is used. -; See also output_buffer. -; http://php.net/output-encoding -;output_encoding = - -;;;;;;;;;;;;;;;;;;;;;;;;; -; Paths and Directories ; -;;;;;;;;;;;;;;;;;;;;;;;;; - -; UNIX: "/path1:/path2" -;include_path = ".:/php/includes" -; -; Windows: "\path1;\path2" -;include_path = ".;c:\php\includes" -; -; PHP's default setting for include_path is ".;/path/to/php/pear" -; http://php.net/include-path - -; The root of the PHP pages, used only if nonempty. -; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root -; if you are running php as a CGI under any web server (other than IIS) -; see documentation for security issues. The alternate is to use the -; cgi.force_redirect configuration below -; http://php.net/doc-root -doc_root = - -; The directory under which PHP opens the script using /~username used only -; if nonempty. -; http://php.net/user-dir -user_dir = - -; Directory in which the loadable extensions (modules) reside. -; http://php.net/extension-dir -;extension_dir = "./" -; On windows: -;extension_dir = "ext" - -; Directory where the temporary files should be placed. -; Defaults to the system default (see sys_get_temp_dir) -;sys_temp_dir = "/tmp" - -; Whether or not to enable the dl() function. The dl() function does NOT work -; properly in multithreaded servers, such as IIS or Zeus, and is automatically -; disabled on them. -; http://php.net/enable-dl -enable_dl = Off - -; cgi.force_redirect is necessary to provide security running PHP as a CGI under -; most web servers. Left undefined, PHP turns this on by default. You can -; turn it off here AT YOUR OWN RISK -; **You CAN safely turn this off for IIS, in fact, you MUST.** -; http://php.net/cgi.force-redirect -;cgi.force_redirect = 1 - -; if cgi.nph is enabled it will force cgi to always sent Status: 200 with -; every request. PHP's default behavior is to disable this feature. -;cgi.nph = 1 - -; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape -; (iPlanet) web servers, you MAY need to set an environment variable name that PHP -; will look for to know it is OK to continue execution. Setting this variable MAY -; cause security issues, KNOW WHAT YOU ARE DOING FIRST. -; http://php.net/cgi.redirect-status-env -;cgi.redirect_status_env = - -; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's -; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok -; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting -; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting -; of zero causes PHP to behave as before. Default is 1. You should fix your scripts -; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. -; http://php.net/cgi.fix-pathinfo -;cgi.fix_pathinfo=1 - -; if cgi.discard_path is enabled, the PHP CGI binary can safely be placed outside -; of the web tree and people will not be able to circumvent .htaccess security. -;cgi.discard_path=1 - -; FastCGI under IIS supports the ability to impersonate -; security tokens of the calling client. This allows IIS to define the -; security context that the request runs under. mod_fastcgi under Apache -; does not currently support this feature (03/17/2002) -; Set to 1 if running under IIS. Default is zero. -; http://php.net/fastcgi.impersonate -;fastcgi.impersonate = 1 - -; Disable logging through FastCGI connection. PHP's default behavior is to enable -; this feature. -;fastcgi.logging = 0 - -; cgi.rfc2616_headers configuration option tells PHP what type of headers to -; use when sending HTTP response code. If set to 0, PHP sends Status: header that -; is supported by Apache. When this option is set to 1, PHP will send -; RFC2616 compliant header. -; Default is zero. -; http://php.net/cgi.rfc2616-headers -;cgi.rfc2616_headers = 0 - -; cgi.check_shebang_line controls whether CGI PHP checks for line starting with #! -; (shebang) at the top of the running script. This line might be needed if the -; script support running both as stand-alone script and via PHP CGI<. PHP in CGI -; mode skips this line and ignores its content if this directive is turned on. -; http://php.net/cgi.check-shebang-line -;cgi.check_shebang_line=1 - -;;;;;;;;;;;;;;;; -; File Uploads ; -;;;;;;;;;;;;;;;; - -; Whether to allow HTTP file uploads. -; http://php.net/file-uploads -file_uploads = On - -; Temporary directory for HTTP uploaded files (will use system default if not -; specified). -; http://php.net/upload-tmp-dir -;upload_tmp_dir = - -; Maximum allowed size for uploaded files. -; http://php.net/upload-max-filesize -upload_max_filesize = 2M - -; Maximum number of files that can be uploaded via a single request -max_file_uploads = 20 - -;;;;;;;;;;;;;;;;;; -; Fopen wrappers ; -;;;;;;;;;;;;;;;;;; - -; Whether to allow the treatment of URLs (like http:// or ftp://) as files. -; http://php.net/allow-url-fopen -allow_url_fopen = On - -; Whether to allow include/require to open URLs (like http:// or ftp://) as files. -; http://php.net/allow-url-include -allow_url_include = Off - -; Define the anonymous ftp password (your email address). PHP's default setting -; for this is empty. -; http://php.net/from -;from="john@doe.com" - -; Define the User-Agent string. PHP's default setting for this is empty. -; http://php.net/user-agent -;user_agent="PHP" - -; Default timeout for socket based streams (seconds) -; http://php.net/default-socket-timeout -default_socket_timeout = 60 - -; If your scripts have to deal with files from Macintosh systems, -; or you are running on a Mac and need to deal with files from -; unix or win32 systems, setting this flag will cause PHP to -; automatically detect the EOL character in those files so that -; fgets() and file() will work regardless of the source of the file. -; http://php.net/auto-detect-line-endings -;auto_detect_line_endings = Off - -;;;;;;;;;;;;;;;;;;;;;; -; Dynamic Extensions ; -;;;;;;;;;;;;;;;;;;;;;; - -; If you wish to have an extension loaded automatically, use the following -; syntax: -; -; extension=modulename -; -; For example: -; -; extension=mysqli -; -; When the extension library to load is not located in the default extension -; directory, You may specify an absolute path to the library file: -; -; extension=/path/to/extension/mysqli.so -; -; Note : The syntax used in previous PHP versions ('extension=.so' and -; 'extension='php_.dll') is supported for legacy reasons and may be -; deprecated in a future PHP major version. So, when it is possible, please -; move to the new ('extension=) syntax. -; -; Notes for Windows environments : -; -; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+) -; extension folders as well as the separate PECL DLL download (PHP 5+). -; Be sure to appropriately set the extension_dir directive. -; -; extension=bz2 -extension=curl -; extension=ffi -; extension=ftp -; extension=fileinfo -; extension=gd2 -; extension=gettext -; extension=gmp -; extension=intl -; extension=imap -; extension=ldap -; extension=mbstring -; extension=exif ; Must be after mbstring as it depends on it -; extension=mysqli -; extension=oci8_12c ; Use with Oracle Database 12c Instant Client -; extension=odbc -; extension=openssl -; extension=pdo_firebird -; extension=pdo_mysql -; extension=pdo_oci -; extension=pdo_odbc -; extension=pdo_pgsql -; extension=pdo_sqlite -; extension=pgsql -; extension=shmop - -zend_extension=opcache.so - -; The MIBS data available in the PHP distribution must be installed. -; See http://www.php.net/manual/en/snmp.installation.php -;extension=snmp - -;extension=soap -;extension=sockets -;extension=sodium -;extension=sqlite3 -;extension=tidy -;extension=xmlrpc -;extension=xsl - -;;;;;;;;;;;;;;;;;;; -; Module Settings ; -;;;;;;;;;;;;;;;;;;; - -[CLI Server] -; Whether the CLI web server uses ANSI color coding in its terminal output. -cli_server.color = On - -[Date] -; Defines the default timezone used by the date functions -; http://php.net/date.timezone -;date.timezone = - -; http://php.net/date.default-latitude -;date.default_latitude = 31.7667 - -; http://php.net/date.default-longitude -;date.default_longitude = 35.2333 - -; http://php.net/date.sunrise-zenith -;date.sunrise_zenith = 90.583333 - -; http://php.net/date.sunset-zenith -;date.sunset_zenith = 90.583333 - -[filter] -; http://php.net/filter.default -;filter.default = unsafe_raw - -; http://php.net/filter.default-flags -;filter.default_flags = - -[iconv] -; Use of this INI entry is deprecated, use global input_encoding instead. -; If empty, default_charset or input_encoding or iconv.input_encoding is used. -; The precedence is: default_charset < input_encoding < iconv.input_encoding -;iconv.input_encoding = - -; Use of this INI entry is deprecated, use global internal_encoding instead. -; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. -; The precedence is: default_charset < internal_encoding < iconv.internal_encoding -;iconv.internal_encoding = - -; Use of this INI entry is deprecated, use global output_encoding instead. -; If empty, default_charset or output_encoding or iconv.output_encoding is used. -; The precedence is: default_charset < output_encoding < iconv.output_encoding -; To use an output encoding conversion, iconv's output handler must be set -; otherwise output encoding conversion cannot be performed. -;iconv.output_encoding = - -[imap] -; rsh/ssh logins are disabled by default. Use this INI entry if you want to -; enable them. Note that the IMAP library does not filter mailbox names before -; passing them to rsh/ssh command, thus passing untrusted data to this function -; with rsh/ssh enabled is insecure. -;imap.enable_insecure_rsh=0 - -[intl] -;intl.default_locale = -; This directive allows you to produce PHP errors when some error -; happens within intl functions. The value is the level of the error produced. -; Default is 0, which does not produce any errors. -;intl.error_level = E_WARNING -;intl.use_exceptions = 0 - -[sqlite3] -; Directory pointing to SQLite3 extensions -; http://php.net/sqlite3.extension-dir -;sqlite3.extension_dir = - -; SQLite defensive mode flag (only available from SQLite 3.26+) -; When the defensive flag is enabled, language features that allow ordinary -; SQL to deliberately corrupt the database file are disabled. This forbids -; writing directly to the schema, shadow tables (eg. FTS data tables), or -; the sqlite_dbpage virtual table. -; https://www.sqlite.org/c3ref/c_dbconfig_defensive.html -; (for older SQLite versions, this flag has no use) -;sqlite3.defensive = 1 - -[Pcre] -; PCRE library backtracking limit. -; http://php.net/pcre.backtrack-limit -;pcre.backtrack_limit=100000 - -; PCRE library recursion limit. -; Please note that if you set this value to a high number you may consume all -; the available process stack and eventually crash PHP (due to reaching the -; stack size limit imposed by the Operating System). -; http://php.net/pcre.recursion-limit -;pcre.recursion_limit=100000 - -; Enables or disables JIT compilation of patterns. This requires the PCRE -; library to be compiled with JIT support. -;pcre.jit=1 - -[Pdo] -; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off" -; http://php.net/pdo-odbc.connection-pooling -;pdo_odbc.connection_pooling=strict - -;pdo_odbc.db2_instance_name - -[Pdo_mysql] -; Default socket name for local MySQL connects. If empty, uses the built-in -; MySQL defaults. -pdo_mysql.default_socket= - -[Phar] -; http://php.net/phar.readonly -;phar.readonly = On - -; http://php.net/phar.require-hash -;phar.require_hash = On - -;phar.cache_list = - -[mail function] -; For Win32 only. -; http://php.net/smtp -SMTP = localhost -; http://php.net/smtp-port -smtp_port = 25 - -; For Win32 only. -; http://php.net/sendmail-from -;sendmail_from = me@example.com - -; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). -; http://php.net/sendmail-path -;sendmail_path = - -; Force the addition of the specified parameters to be passed as extra parameters -; to the sendmail binary. These parameters will always replace the value of -; the 5th parameter to mail(). -;mail.force_extra_parameters = - -; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename -mail.add_x_header = Off - -; The path to a log file that will log all mail() calls. Log entries include -; the full path of the script, line number, To address and headers. -;mail.log = -; Log mail to syslog (Event Log on Windows). -;mail.log = syslog - -[ODBC] -; http://php.net/odbc.default-db -;odbc.default_db = Not yet implemented - -; http://php.net/odbc.default-user -;odbc.default_user = Not yet implemented - -; http://php.net/odbc.default-pw -;odbc.default_pw = Not yet implemented - -; Controls the ODBC cursor model. -; Default: SQL_CURSOR_STATIC (default). -;odbc.default_cursortype - -; Allow or prevent persistent links. -; http://php.net/odbc.allow-persistent -odbc.allow_persistent = On - -; Check that a connection is still valid before reuse. -; http://php.net/odbc.check-persistent -odbc.check_persistent = On - -; Maximum number of persistent links. -1 means no limit. -; http://php.net/odbc.max-persistent -odbc.max_persistent = -1 - -; Maximum number of links (persistent + non-persistent). -1 means no limit. -; http://php.net/odbc.max-links -odbc.max_links = -1 - -; Handling of LONG fields. Returns number of bytes to variables. 0 means -; passthru. -; http://php.net/odbc.defaultlrl -odbc.defaultlrl = 4096 - -; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. -; See the documentation on odbc_binmode and odbc_longreadlen for an explanation -; of odbc.defaultlrl and odbc.defaultbinmode -; http://php.net/odbc.defaultbinmode -odbc.defaultbinmode = 1 - -[MySQLi] - -; Maximum number of persistent links. -1 means no limit. -; http://php.net/mysqli.max-persistent -mysqli.max_persistent = -1 - -; Allow accessing, from PHP's perspective, local files with LOAD DATA statements -; http://php.net/mysqli.allow_local_infile -;mysqli.allow_local_infile = On - -; Allow or prevent persistent links. -; http://php.net/mysqli.allow-persistent -mysqli.allow_persistent = On - -; Maximum number of links. -1 means no limit. -; http://php.net/mysqli.max-links -mysqli.max_links = -1 - -; Default port number for mysqli_connect(). If unset, mysqli_connect() will use -; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the -; compile-time value defined MYSQL_PORT (in that order). Win32 will only look -; at MYSQL_PORT. -; http://php.net/mysqli.default-port -mysqli.default_port = 3306 - -; Default socket name for local MySQL connects. If empty, uses the built-in -; MySQL defaults. -; http://php.net/mysqli.default-socket -mysqli.default_socket = - -; Default host for mysqli_connect() (doesn't apply in safe mode). -; http://php.net/mysqli.default-host -mysqli.default_host = - -; Default user for mysqli_connect() (doesn't apply in safe mode). -; http://php.net/mysqli.default-user -mysqli.default_user = - -; Default password for mysqli_connect() (doesn't apply in safe mode). -; Note that this is generally a *bad* idea to store passwords in this file. -; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw") -; and reveal this password! And of course, any users with read access to this -; file will be able to reveal the password as well. -; http://php.net/mysqli.default-pw -mysqli.default_pw = - -; Allow or prevent reconnect -mysqli.reconnect = Off - -[mysqlnd] -; Enable / Disable collection of general statistics by mysqlnd which can be -; used to tune and monitor MySQL operations. -mysqlnd.collect_statistics = On - -; Enable / Disable collection of memory usage statistics by mysqlnd which can be -; used to tune and monitor MySQL operations. -mysqlnd.collect_memory_statistics = On - -; Records communication from all extensions using mysqlnd to the specified log -; file. -; http://php.net/mysqlnd.debug -;mysqlnd.debug = - -; Defines which queries will be logged. -;mysqlnd.log_mask = 0 - -; Default size of the mysqlnd memory pool, which is used by result sets. -;mysqlnd.mempool_default_size = 16000 - -; Size of a pre-allocated buffer used when sending commands to MySQL in bytes. -;mysqlnd.net_cmd_buffer_size = 2048 - -; Size of a pre-allocated buffer used for reading data sent by the server in -; bytes. -;mysqlnd.net_read_buffer_size = 32768 - -; Timeout for network requests in seconds. -;mysqlnd.net_read_timeout = 31536000 - -; SHA-256 Authentication Plugin related. File with the MySQL server public RSA -; key. -;mysqlnd.sha256_server_public_key = - -[OCI8] - -; Connection: Enables privileged connections using external -; credentials (OCI_SYSOPER, OCI_SYSDBA) -; http://php.net/oci8.privileged-connect -;oci8.privileged_connect = Off - -; Connection: The maximum number of persistent OCI8 connections per -; process. Using -1 means no limit. -; http://php.net/oci8.max-persistent -;oci8.max_persistent = -1 - -; Connection: The maximum number of seconds a process is allowed to -; maintain an idle persistent connection. Using -1 means idle -; persistent connections will be maintained forever. -; http://php.net/oci8.persistent-timeout -;oci8.persistent_timeout = -1 - -; Connection: The number of seconds that must pass before issuing a -; ping during oci_pconnect() to check the connection validity. When -; set to 0, each oci_pconnect() will cause a ping. Using -1 disables -; pings completely. -; http://php.net/oci8.ping-interval -;oci8.ping_interval = 60 - -; Connection: Set this to a user chosen connection class to be used -; for all pooled server requests with Oracle 11g Database Resident -; Connection Pooling (DRCP). To use DRCP, this value should be set to -; the same string for all web servers running the same application, -; the database pool must be configured, and the connection string must -; specify to use a pooled server. -;oci8.connection_class = - -; High Availability: Using On lets PHP receive Fast Application -; Notification (FAN) events generated when a database node fails. The -; database must also be configured to post FAN events. -;oci8.events = Off - -; Tuning: This option enables statement caching, and specifies how -; many statements to cache. Using 0 disables statement caching. -; http://php.net/oci8.statement-cache-size -;oci8.statement_cache_size = 20 - -; Tuning: Enables statement prefetching and sets the default number of -; rows that will be fetched automatically after statement execution. -; http://php.net/oci8.default-prefetch -;oci8.default_prefetch = 100 - -; Compatibility. Using On means oci_close() will not close -; oci_connect() and oci_new_connect() connections. -; http://php.net/oci8.old-oci-close-semantics -;oci8.old_oci_close_semantics = Off - -[PostgreSQL] -; Allow or prevent persistent links. -; http://php.net/pgsql.allow-persistent -pgsql.allow_persistent = On - -; Detect broken persistent links always with pg_pconnect(). -; Auto reset feature requires a little overheads. -; http://php.net/pgsql.auto-reset-persistent -pgsql.auto_reset_persistent = Off - -; Maximum number of persistent links. -1 means no limit. -; http://php.net/pgsql.max-persistent -pgsql.max_persistent = -1 - -; Maximum number of links (persistent+non persistent). -1 means no limit. -; http://php.net/pgsql.max-links -pgsql.max_links = -1 - -; Ignore PostgreSQL backends Notice message or not. -; Notice message logging require a little overheads. -; http://php.net/pgsql.ignore-notice -pgsql.ignore_notice = 0 - -; Log PostgreSQL backends Notice message or not. -; Unless pgsql.ignore_notice=0, module cannot log notice message. -; http://php.net/pgsql.log-notice -pgsql.log_notice = 0 - -[bcmath] -; Number of decimal digits for all bcmath functions. -; http://php.net/bcmath.scale -bcmath.scale = 0 - -[browscap] -; http://php.net/browscap -;browscap = extra/browscap.ini - -[Session] -; Handler used to store/retrieve data. -; http://php.net/session.save-handler -session.save_handler = files - -; Argument passed to save_handler. In the case of files, this is the path -; where data files are stored. Note: Windows users have to change this -; variable in order to use PHP's session functions. -; -; The path can be defined as: -; -; session.save_path = "N;/path" -; -; where N is an integer. Instead of storing all the session files in -; /path, what this will do is use subdirectories N-levels deep, and -; store the session data in those directories. This is useful if -; your OS has problems with many files in one directory, and is -; a more efficient layout for servers that handle many sessions. -; -; NOTE 1: PHP will not create this directory structure automatically. -; You can use the script in the ext/session dir for that purpose. -; NOTE 2: See the section on garbage collection below if you choose to -; use subdirectories for session storage -; -; The file storage module creates files using mode 600 by default. -; You can change that by using -; -; session.save_path = "N;MODE;/path" -; -; where MODE is the octal representation of the mode. Note that this -; does not overwrite the process's umask. -; http://php.net/session.save-path -;session.save_path = "/tmp" - -; Whether to use strict session mode. -; Strict session mode does not accept an uninitialized session ID, and -; regenerates the session ID if the browser sends an uninitialized session ID. -; Strict mode protects applications from session fixation via a session adoption -; vulnerability. It is disabled by default for maximum compatibility, but -; enabling it is encouraged. -; https://wiki.php.net/rfc/strict_sessions -session.use_strict_mode = 0 - -; Whether to use cookies. -; http://php.net/session.use-cookies -session.use_cookies = 1 - -; http://php.net/session.cookie-secure -;session.cookie_secure = - -; This option forces PHP to fetch and use a cookie for storing and maintaining -; the session id. We encourage this operation as it's very helpful in combating -; session hijacking when not specifying and managing your own session id. It is -; not the be-all and end-all of session hijacking defense, but it's a good start. -; http://php.net/session.use-only-cookies -session.use_only_cookies = 1 - -; Name of the session (used as cookie name). -; http://php.net/session.name -session.name = PHPSESSID - -; Initialize session on request startup. -; http://php.net/session.auto-start -session.auto_start = 0 - -; Lifetime in seconds of cookie or, if 0, until browser is restarted. -; http://php.net/session.cookie-lifetime -session.cookie_lifetime = 0 - -; The path for which the cookie is valid. -; http://php.net/session.cookie-path -session.cookie_path = / - -; The domain for which the cookie is valid. -; http://php.net/session.cookie-domain -session.cookie_domain = - -; Whether or not to add the httpOnly flag to the cookie, which makes it -; inaccessible to browser scripting languages such as JavaScript. -; http://php.net/session.cookie-httponly -session.cookie_httponly = - -; Add SameSite attribute to cookie to help mitigate Cross-Site Request Forgery (CSRF/XSRF) -; Current valid values are "Strict", "Lax" or "None". When using "None", -; make sure to include the quotes, as `none` is interpreted like `false` in ini files. -; https://tools.ietf.org/html/draft-west-first-party-cookies-07 -session.cookie_samesite = - -; Handler used to serialize data. php is the standard serializer of PHP. -; http://php.net/session.serialize-handler -session.serialize_handler = php - -; Defines the probability that the 'garbage collection' process is started on every -; session initialization. The probability is calculated by using gc_probability/gc_divisor, -; e.g. 1/100 means there is a 1% chance that the GC process starts on each request. -; Default Value: 1 -; Development Value: 1 -; Production Value: 1 -; http://php.net/session.gc-probability -session.gc_probability = 1 - -; Defines the probability that the 'garbage collection' process is started on every -; session initialization. The probability is calculated by using gc_probability/gc_divisor, -; e.g. 1/100 means there is a 1% chance that the GC process starts on each request. -; For high volume production servers, using a value of 1000 is a more efficient approach. -; Default Value: 100 -; Development Value: 1000 -; Production Value: 1000 -; http://php.net/session.gc-divisor -session.gc_divisor = 1000 - -; After this number of seconds, stored data will be seen as 'garbage' and -; cleaned up by the garbage collection process. -; http://php.net/session.gc-maxlifetime -session.gc_maxlifetime = 1440 - -; NOTE: If you are using the subdirectory option for storing session files -; (see session.save_path above), then garbage collection does *not* -; happen automatically. You will need to do your own garbage -; collection through a shell script, cron entry, or some other method. -; For example, the following script is the equivalent of setting -; session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): -; find /path/to/sessions -cmin +24 -type f | xargs rm - -; Check HTTP Referer to invalidate externally stored URLs containing ids. -; HTTP_REFERER has to contain this substring for the session to be -; considered as valid. -; http://php.net/session.referer-check -session.referer_check = - -; Set to {nocache,private,public,} to determine HTTP caching aspects -; or leave this empty to avoid sending anti-caching headers. -; http://php.net/session.cache-limiter -session.cache_limiter = nocache - -; Document expires after n minutes. -; http://php.net/session.cache-expire -session.cache_expire = 180 - -; trans sid support is disabled by default. -; Use of trans sid may risk your users' security. -; Use this option with caution. -; - User may send URL contains active session ID -; to other person via. email/irc/etc. -; - URL that contains active session ID may be stored -; in publicly accessible computer. -; - User may access your site with the same session ID -; always using URL stored in browser's history or bookmarks. -; http://php.net/session.use-trans-sid -session.use_trans_sid = 0 - -; Set session ID character length. This value could be between 22 to 256. -; Shorter length than default is supported only for compatibility reason. -; Users should use 32 or more chars. -; http://php.net/session.sid-length -; Default Value: 32 -; Development Value: 26 -; Production Value: 26 -session.sid_length = 26 - -; The URL rewriter will look for URLs in a defined set of HTML tags. -;
is special; if you include them here, the rewriter will -; add a hidden field with the info which is otherwise appended -; to URLs. tag's action attribute URL will not be modified -; unless it is specified. -; Note that all valid entries require a "=", even if no value follows. -; Default Value: "a=href,area=href,frame=src,form=" -; Development Value: "a=href,area=href,frame=src,form=" -; Production Value: "a=href,area=href,frame=src,form=" -; http://php.net/url-rewriter.tags -session.trans_sid_tags = "a=href,area=href,frame=src,form=" - -; URL rewriter does not rewrite absolute URLs by default. -; To enable rewrites for absolute paths, target hosts must be specified -; at RUNTIME. i.e. use ini_set() -; tags is special. PHP will check action attribute's URL regardless -; of session.trans_sid_tags setting. -; If no host is defined, HTTP_HOST will be used for allowed host. -; Example value: php.net,www.php.net,wiki.php.net -; Use "," for multiple hosts. No spaces are allowed. -; Default Value: "" -; Development Value: "" -; Production Value: "" -;session.trans_sid_hosts="" - -; Define how many bits are stored in each character when converting -; the binary hash data to something readable. -; Possible values: -; 4 (4 bits: 0-9, a-f) -; 5 (5 bits: 0-9, a-v) -; 6 (6 bits: 0-9, a-z, A-Z, "-", ",") -; Default Value: 4 -; Development Value: 5 -; Production Value: 5 -; http://php.net/session.hash-bits-per-character -session.sid_bits_per_character = 5 - -; Enable upload progress tracking in $_SESSION -; Default Value: On -; Development Value: On -; Production Value: On -; http://php.net/session.upload-progress.enabled -;session.upload_progress.enabled = On - -; Cleanup the progress information as soon as all POST data has been read -; (i.e. upload completed). -; Default Value: On -; Development Value: On -; Production Value: On -; http://php.net/session.upload-progress.cleanup -;session.upload_progress.cleanup = On - -; A prefix used for the upload progress key in $_SESSION -; Default Value: "upload_progress_" -; Development Value: "upload_progress_" -; Production Value: "upload_progress_" -; http://php.net/session.upload-progress.prefix -;session.upload_progress.prefix = "upload_progress_" - -; The index name (concatenated with the prefix) in $_SESSION -; containing the upload progress information -; Default Value: "PHP_SESSION_UPLOAD_PROGRESS" -; Development Value: "PHP_SESSION_UPLOAD_PROGRESS" -; Production Value: "PHP_SESSION_UPLOAD_PROGRESS" -; http://php.net/session.upload-progress.name -;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS" - -; How frequently the upload progress should be updated. -; Given either in percentages (per-file), or in bytes -; Default Value: "1%" -; Development Value: "1%" -; Production Value: "1%" -; http://php.net/session.upload-progress.freq -;session.upload_progress.freq = "1%" - -; The minimum delay between updates, in seconds -; Default Value: 1 -; Development Value: 1 -; Production Value: 1 -; http://php.net/session.upload-progress.min-freq -;session.upload_progress.min_freq = "1" - -; Only write session data when session data is changed. Enabled by default. -; http://php.net/session.lazy-write -;session.lazy_write = On - -[Assertion] -; Switch whether to compile assertions at all (to have no overhead at run-time) -; -1: Do not compile at all -; 0: Jump over assertion at run-time -; 1: Execute assertions -; Changing from or to a negative value is only possible in php.ini! (For turning assertions on and off at run-time, see assert.active, when zend.assertions = 1) -; Default Value: 1 -; Development Value: 1 -; Production Value: -1 -; http://php.net/zend.assertions -zend.assertions = 1 - -; Assert(expr); active by default. -; http://php.net/assert.active -;assert.active = On - -; Throw an AssertionError on failed assertions -; http://php.net/assert.exception -;assert.exception = On - -; Issue a PHP warning for each failed assertion. (Overridden by assert.exception if active) -; http://php.net/assert.warning -;assert.warning = On - -; Don't bail out by default. -; http://php.net/assert.bail -;assert.bail = Off - -; User-function to be called if an assertion fails. -; http://php.net/assert.callback -;assert.callback = 0 - -; Eval the expression with current error_reporting(). Set to true if you want -; error_reporting(0) around the eval(). -; http://php.net/assert.quiet-eval -;assert.quiet_eval = 0 - -[COM] -; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs -; http://php.net/com.typelib-file -;com.typelib_file = - -; allow Distributed-COM calls -; http://php.net/com.allow-dcom -;com.allow_dcom = true - -; autoregister constants of a component's typlib on com_load() -; http://php.net/com.autoregister-typelib -;com.autoregister_typelib = true - -; register constants casesensitive -; http://php.net/com.autoregister-casesensitive -;com.autoregister_casesensitive = false - -; show warnings on duplicate constant registrations -; http://php.net/com.autoregister-verbose -;com.autoregister_verbose = true - -; The default character set code-page to use when passing strings to and from COM objects. -; Default: system ANSI code page -;com.code_page= - -[mbstring] -; language for internal character representation. -; This affects mb_send_mail() and mbstring.detect_order. -; http://php.net/mbstring.language -;mbstring.language = Japanese - -; Use of this INI entry is deprecated, use global internal_encoding instead. -; internal/script encoding. -; Some encoding cannot work as internal encoding. (e.g. SJIS, BIG5, ISO-2022-*) -; If empty, default_charset or internal_encoding or iconv.internal_encoding is used. -; The precedence is: default_charset < internal_encoding < iconv.internal_encoding -;mbstring.internal_encoding = - -; Use of this INI entry is deprecated, use global input_encoding instead. -; http input encoding. -; mbstring.encoding_translation = On is needed to use this setting. -; If empty, default_charset or input_encoding or mbstring.input is used. -; The precedence is: default_charset < input_encoding < mbstring.http_input -; http://php.net/mbstring.http-input -;mbstring.http_input = - -; Use of this INI entry is deprecated, use global output_encoding instead. -; http output encoding. -; mb_output_handler must be registered as output buffer to function. -; If empty, default_charset or output_encoding or mbstring.http_output is used. -; The precedence is: default_charset < output_encoding < mbstring.http_output -; To use an output encoding conversion, mbstring's output handler must be set -; otherwise output encoding conversion cannot be performed. -; http://php.net/mbstring.http-output -;mbstring.http_output = - -; enable automatic encoding translation according to -; mbstring.internal_encoding setting. Input chars are -; converted to internal encoding by setting this to On. -; Note: Do _not_ use automatic encoding translation for -; portable libs/applications. -; http://php.net/mbstring.encoding-translation -;mbstring.encoding_translation = Off - -; automatic encoding detection order. -; "auto" detect order is changed according to mbstring.language -; http://php.net/mbstring.detect-order -;mbstring.detect_order = auto - -; substitute_character used when character cannot be converted -; one from another -; http://php.net/mbstring.substitute-character -;mbstring.substitute_character = none - -; overload(replace) single byte functions by mbstring functions. -; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), -; etc. Possible values are 0,1,2,4 or combination of them. -; For example, 7 for overload everything. -; 0: No overload -; 1: Overload mail() function -; 2: Overload str*() functions -; 4: Overload ereg*() functions -; http://php.net/mbstring.func-overload -;mbstring.func_overload = 0 - -; enable strict encoding detection. -; Default: Off -;mbstring.strict_detection = On - -; This directive specifies the regex pattern of content types for which mb_output_handler() -; is activated. -; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml) -;mbstring.http_output_conv_mimetype= - -; This directive specifies maximum stack depth for mbstring regular expressions. It is similar -; to the pcre.recursion_limit for PCRE. -; Default: 100000 -;mbstring.regex_stack_limit=100000 - -; This directive specifies maximum retry count for mbstring regular expressions. It is similar -; to the pcre.backtrack_limit for PCRE. -; Default: 1000000 -;mbstring.regex_retry_limit=1000000 - -[gd] -; Tell the jpeg decode to ignore warnings and try to create -; a gd image. The warning will then be displayed as notices -; disabled by default -; http://php.net/gd.jpeg-ignore-warning -;gd.jpeg_ignore_warning = 1 - -[exif] -; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. -; With mbstring support this will automatically be converted into the encoding -; given by corresponding encode setting. When empty mbstring.internal_encoding -; is used. For the decode settings you can distinguish between motorola and -; intel byte order. A decode setting cannot be empty. -; http://php.net/exif.encode-unicode -;exif.encode_unicode = ISO-8859-15 - -; http://php.net/exif.decode-unicode-motorola -;exif.decode_unicode_motorola = UCS-2BE - -; http://php.net/exif.decode-unicode-intel -;exif.decode_unicode_intel = UCS-2LE - -; http://php.net/exif.encode-jis -;exif.encode_jis = - -; http://php.net/exif.decode-jis-motorola -;exif.decode_jis_motorola = JIS - -; http://php.net/exif.decode-jis-intel -;exif.decode_jis_intel = JIS - -[Tidy] -; The path to a default tidy configuration file to use when using tidy -; http://php.net/tidy.default-config -;tidy.default_config = /usr/local/lib/php/default.tcfg - -; Should tidy clean and repair output automatically? -; WARNING: Do not use this option if you are generating non-html content -; such as dynamic images -; http://php.net/tidy.clean-output -tidy.clean_output = Off - -[soap] -; Enables or disables WSDL caching feature. -; http://php.net/soap.wsdl-cache-enabled -soap.wsdl_cache_enabled=1 - -; Sets the directory name where SOAP extension will put cache files. -; http://php.net/soap.wsdl-cache-dir -soap.wsdl_cache_dir="/tmp" - -; (time to live) Sets the number of second while cached file will be used -; instead of original one. -; http://php.net/soap.wsdl-cache-ttl -soap.wsdl_cache_ttl=86400 - -; Sets the size of the cache limit. (Max. number of WSDL files to cache) -soap.wsdl_cache_limit = 5 - -[sysvshm] -; A default size of the shared memory segment -;sysvshm.init_mem = 10000 - -[ldap] -; Sets the maximum number of open links or -1 for unlimited. -ldap.max_links = -1 - -[dba] -;dba.default_handler= - -[opcache] -; Determines if Zend OPCache is enabled -opcache.enable=1 - -; Determines if Zend OPCache is enabled for the CLI version of PHP -opcache.enable_cli=1 - -; The OPcache shared memory storage size. -opcache.memory_consumption=128 - -; The amount of memory for interned strings in Mbytes. -opcache.interned_strings_buffer=8 - -; The maximum number of keys (scripts) in the OPcache hash table. -; Only numbers between 200 and 1000000 are allowed. -;opcache.max_accelerated_files=10000 - -; The maximum percentage of "wasted" memory until a restart is scheduled. -;opcache.max_wasted_percentage=5 - -; When this directive is enabled, the OPcache appends the current working -; directory to the script key, thus eliminating possible collisions between -; files with the same name (basename). Disabling the directive improves -; performance, but may break existing applications. -opcache.use_cwd=1 - -; When disabled, you must reset the OPcache manually or restart the -; webserver for changes to the filesystem to take effect. -opcache.validate_timestamps=0 - -; How often (in seconds) to check file timestamps for changes to the shared -; memory storage allocation. ("1" means validate once per second, but only -; once per request. "0" means always validate) -;opcache.revalidate_freq=2 - -; Enables or disables file search in include_path optimization -;opcache.revalidate_path=0 - -; If disabled, all PHPDoc comments are dropped from the code to reduce the -; size of the optimized code. -;opcache.save_comments=1 - -; Allow file existence override (file_exists, etc.) performance feature. -;opcache.enable_file_override=0 - -; A bitmask, where each bit enables or disables the appropriate OPcache -; passes -;opcache.optimization_level=0x7FFFBFFF - -;opcache.dups_fix=0 - -; The location of the OPcache blacklist file (wildcards allowed). -; Each OPcache blacklist file is a text file that holds the names of files -; that should not be accelerated. The file format is to add each filename -; to a new line. The filename may be a full path or just a file prefix -; (i.e., /var/www/x blacklists all the files and directories in /var/www -; that start with 'x'). Line starting with a ; are ignored (comments). -;opcache.blacklist_filename= - -; Allows exclusion of large files from being cached. By default all files -; are cached. -;opcache.max_file_size=0 - -; Check the cache checksum each N requests. -; The default value of "0" means that the checks are disabled. -;opcache.consistency_checks=0 - -; How long to wait (in seconds) for a scheduled restart to begin if the cache -; is not being accessed. -;opcache.force_restart_timeout=180 - -; OPcache error_log file name. Empty string assumes "stderr". -opcache.error_log="" - -; All OPcache errors go to the Web server log. -; By default, only fatal errors (level 0) or errors (level 1) are logged. -; You can also enable warnings (level 2), info messages (level 3) or -; debug messages (level 4). -opcache.log_verbosity_level=4 - -; Preferred Shared Memory back-end. Leave empty and let the system decide. -;opcache.preferred_memory_model= - -; Protect the shared memory from unexpected writing during script execution. -; Useful for internal debugging only. -;opcache.protect_memory=0 - -; Allows calling OPcache API functions only from PHP scripts which path is -; started from specified string. The default "" means no restriction -;opcache.restrict_api= - -; Mapping base of shared memory segments (for Windows only). All the PHP -; processes have to map shared memory into the same address space. This -; directive allows to manually fix the "Unable to reattach to base address" -; errors. -;opcache.mmap_base= - -; Facilitates multiple OPcache instances per user (for Windows only). All PHP -; processes with the same cache ID and user share an OPcache instance. -;opcache.cache_id= - -; Enables and sets the second level cache directory. -; It should improve performance when SHM memory is full, at server restart or -; SHM reset. The default "" disables file based caching. -;opcache.file_cache= - -; Enables or disables opcode caching in shared memory. -;opcache.file_cache_only=0 - -; Enables or disables checksum validation when script loaded from file cache. -;opcache.file_cache_consistency_checks=1 - -; Implies opcache.file_cache_only=1 for a certain process that failed to -; reattach to the shared memory (for Windows only). Explicitly enabled file -; cache is required. -;opcache.file_cache_fallback=1 - -; Enables or disables copying of PHP code (text segment) into HUGE PAGES. -; This should improve performance, but requires appropriate OS configuration. -;opcache.huge_code_pages=0 - -; Validate cached file permissions. -;opcache.validate_permission=0 - -; Prevent name collisions in chroot'ed environment. -;opcache.validate_root=0 - -; If specified, it produces opcode dumps for debugging different stages of -; optimizations. -;opcache.opt_debug_level=0 - -; Specifies a PHP script that is going to be compiled and executed at server -; start-up. -; http://php.net/opcache.preload -;opcache.preload= - -; Preloading code as root is not allowed for security reasons. This directive -; facilitates to let the preloading to be run as another user. -; http://php.net/opcache.preload_user -;opcache.preload_user= - -; Prevents caching files that are less than this number of seconds old. It -; protects from caching of incompletely updated files. In case all file updates -; on your site are atomic, you may increase performance by setting it to "0". -;opcache.file_update_protection=2 - -; Absolute path used to store shared lockfiles (for *nix only). -;opcache.lockfile_path=/tmp - -[curl] -; A default value for the CURLOPT_CAINFO option. This is required to be an -; absolute path. -;curl.cainfo = - -[openssl] -; The location of a Certificate Authority (CA) file on the local filesystem -; to use when verifying the identity of SSL/TLS peers. Most users should -; not specify a value for this directive as PHP will attempt to use the -; OS-managed cert stores in its absence. If specified, this value may still -; be overridden on a per-stream basis via the "cafile" SSL stream context -; option. -;openssl.cafile= - -; If openssl.cafile is not specified or if the CA file is not found, the -; directory pointed to by openssl.capath is searched for a suitable -; certificate. This value must be a correctly hashed certificate directory. -; Most users should not specify a value for this directive as PHP will -; attempt to use the OS-managed cert stores in its absence. If specified, -; this value may still be overridden on a per-stream basis via the "capath" -; SSL stream context option. -;openssl.capath= - -[ffi] -; FFI API restriction. Possible values: -; "preload" - enabled in CLI scripts and preloaded files (default) -; "false" - always disabled -; "true" - always enabled -;ffi.enable=preload - -; List of headers files to preload, wildcard patterns allowed. -;ffi.preload= diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 57383f836..7de981cfd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -67,14 +67,14 @@ jobs: # phpize # ./configure # make - # make test TESTS=src/PHP/tests5/ + # make test TESTS=tests5/ PHP7: runs-on: ubuntu-latest strategy: matrix: # php-versions: ["7.0", "7.1", "7.2", "7.3", "7.4", "8.0"] - php-versions: ["7.0"] + php-versions: ["7.4","8.0"] steps: - uses: actions/checkout@v2 - uses: shivammathur/setup-php@v2 @@ -86,7 +86,7 @@ jobs: phpize ./configure make - make test TESTS=src/PHP/tests/ + make test # sudo make install # sudo echo "extension=pinpoint_php.so" >> /etc/php/${{ matrix.php-versions }}/cli/php.ini # sudo echo "error_log = /home/runner/work/pinpoint-c-agent/pinpoint-c-agent/testapps/PHP/tests/php_error.log" >> /etc/php/${{ matrix.php-versions }}/cli/php.ini diff --git a/.gitignore b/.gitignore index 3883c88ab..b25f89631 100644 --- a/.gitignore +++ b/.gitignore @@ -67,10 +67,11 @@ test.php .libs/ aclocal.m4 src/PHP/pinpoint_php.dep -testapps/PHP/composer.phar collector-agent/collector-agent .cache compile_commands.json +testapps/PHP/composer-setup.php +testapps/PHP/composer.phar wheelhouse/ .clangd collector-agent/pinpoint-grpc-idl/ diff --git a/collector-agent/agent/AgentRouter.go b/collector-agent/agent/AgentRouter.go index 04afd4f2d..0c8b16a8c 100644 --- a/collector-agent/agent/AgentRouter.go +++ b/collector-agent/agent/AgentRouter.go @@ -235,7 +235,8 @@ func GetAgentInfo(span *TSpan) (appid, appname string, appServerType int32, star func (manager *AgentRouter) DispatchPacket(packet *RawPacket) error { //note: set default var of TSpan span := &TSpan{ - // ParentSpanId: -1, + // ParentSpanId:-1 is part of logic in pinpoint + ParentSpanId: -1, } if err := json.Unmarshal(packet.RawData, span); err != nil { diff --git a/collector-agent/agent/SpanSender.go b/collector-agent/agent/SpanSender.go index 87d4c781d..97fd11e8d 100644 --- a/collector-agent/agent/SpanSender.go +++ b/collector-agent/agent/SpanSender.go @@ -197,14 +197,14 @@ func (spanSender *SpanSender) makePinpointSpan(span *TSpan) (*v1.PSpan, error) { pbSpan.ParentSpanId = span.ParentSpanId tidFormat := strings.Split(span.TransactionId, "^") - agentId, startTime, seqenceid := tidFormat[0], tidFormat[1], tidFormat[2] + agentId, startTime, sequenceId := tidFormat[0], tidFormat[1], tidFormat[2] transactionId := v1.PTransactionId{AgentId: agentId} if value, err := strconv.ParseInt(startTime, 10, 64); err == nil { transactionId.AgentStartTime = value } - if value, err := strconv.ParseInt(seqenceid, 10, 64); err == nil { + if value, err := strconv.ParseInt(sequenceId, 10, 64); err == nil { transactionId.Sequence = value } pbSpan.TransactionId = &transactionId @@ -221,8 +221,7 @@ func (spanSender *SpanSender) makePinpointSpan(span *TSpan) (*v1.PSpan, error) { AcceptorHost: span.AcceptorHost, } - acceptEv := v1.PAcceptEvent{Rpc: span.Uri, EndPoint: span.EndPoint, RemoteAddr: span.RemoteAddr, - ParentInfo: &parentInfo} + acceptEv := v1.PAcceptEvent{Rpc: span.Uri, EndPoint: span.EndPoint, RemoteAddr: span.RemoteAddr, ParentInfo: &parentInfo} pbSpan.AcceptEvent = &acceptEv // changes: ERRs's priority bigger EXP, so ERR will replace EXP diff --git a/collector-agent/start-collector-agent.sh b/collector-agent/start-collector-agent.sh index c9597e6ce..7d37e5317 100644 --- a/collector-agent/start-collector-agent.sh +++ b/collector-agent/start-collector-agent.sh @@ -9,6 +9,6 @@ export PP_COLLECTOR_AGENT_ISDOCKER=false # export PP_LOG_DIR=/tmp/ export PP_Log_Level=DEBUG export PP_ADDRESS=0.0.0.0@9999 -export GO_PATH=~/go -export PATH=$PATH:$GO_PATH/bin +export GO_PATH=/home/pinpoint/go/bin +export PATH=$PATH:$GO_PATH make && ./collector-agent \ No newline at end of file diff --git a/config.m4 b/config.m4 index 0f1bac039..7ac4923e7 100644 --- a/config.m4 +++ b/config.m4 @@ -13,20 +13,46 @@ if test "$PHP_PINPOINT_PHP" != "no"; then PHP_SUBST(PINPOINT_PHP_SHARED_LIBADD) PHP_ADD_LIBRARY(stdc++, 1, PINPOINT_PHP_SHARED_LIBADD) PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/common/include) + PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/common/jsoncpp/include) + PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/common/jsoncpp/include) + PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/common/src) PHP_ADD_INCLUDE(PHP_EXT_SRCDIR()/src/PHP) AC_DEFINE(HAVE_PINPOINT_PHP, 1, [Whether you have pinpoint]) - echo "------Build common libraries------------" - mkdir -p PHP_EXT_SRCDIR()/build - cd build - cmake PHP_EXT_SRCDIR()/common -DCMAKE_BUILD_TYPE=Release - make - cd PHP_EXT_SRCDIR() - PINPOINT_COMMON_LIB=PHP_EXT_SRCDIR()/build/lib - echo "----------------------------------------" + # echo "------Build common libraries------------" + # mkdir -p PHP_EXT_SRCDIR()/build + # cd build + # cmake PHP_EXT_SRCDIR()/common -DCMAKE_BUILD_TYPE=Release + # make + # cd PHP_EXT_SRCDIR() + # PINPOINT_COMMON_LIB=PHP_EXT_SRCDIR()/build/lib + # echo "----------------------------------------" - PINPOINT_PHP_SHARED_LIBADD="-l:libpinpoint_common.a $PINPOINT_PHP_SHARED_LIBADD -L$PINPOINT_COMMON_LIB -lrt" + EXTRA_PHP_SRCS="src/PHP/pinpoint_php.cpp" + + PINPOINT_SRCS="$EXTRA_PHP_SRCS \ + common/src/common.cpp \ + common/src/Logging.cpp \ + common/src/Util/Helper.cpp \ + common/src/NodePool/TraceNode.cpp \ + common/src/NodePool/PoolManager.cpp \ + common/src/Context/ContextType.cpp \ + common/src/ConnectionPool/TransLayer.cpp \ + common/src/ConnectionPool/SpanConnectionPool.cpp \ + common/src/Cache/SafeSharedState.cpp \ + common/src/Cache/SharedObj.cpp \ + common/src/Cache/NodeTreeWriter.cpp \ + common/src/Cache/Chunk.cpp \ + " + PINPOINT_SRCS="$PINPOINT_SRCS \ + common/jsoncpp/lib_json/json_writer.cpp \ + common/jsoncpp/lib_json/json_value.cpp \ + common/jsoncpp/lib_json/json_reader.cpp \ + " + + + PINPOINT_PHP_SHARED_LIBADD="$PINPOINT_PHP_SHARED_LIBADD -lrt" - PHP_NEW_EXTENSION(pinpoint_php,src/PHP/pinpoint_php.cpp, $ext_shared) + PHP_NEW_EXTENSION(pinpoint_php,$PINPOINT_SRCS, $ext_shared) PHP_ADD_BUILD_DIR($ext_builddir/src/PHP) fi \ No newline at end of file diff --git a/src/PHP/php_pinpoint_php.h b/src/PHP/php_pinpoint_php.h index 1296ec81b..a22459a83 100644 --- a/src/PHP/php_pinpoint_php.h +++ b/src/PHP/php_pinpoint_php.h @@ -22,40 +22,39 @@ extern zend_module_entry pinpoint_php_module_entry; #define phpext_pinpoint_php_ptr &pinpoint_php_module_entry -#define PHP_PINPOINT_PHP_VERSION "0.2.0" +#define PHP_PINPOINT_PHP_VERSION "0.2.1" #ifdef PHP_WIN32 -# define PHP_PINPOINT_PHP_API __declspec(dllexport) +#define PHP_PINPOINT_PHP_API __declspec(dllexport) #elif defined(__GNUC__) && __GNUC__ >= 4 -# define PHP_PINPOINT_PHP_API __attribute__ ((visibility("default"))) +#define PHP_PINPOINT_PHP_API __attribute__((visibility("default"))) #else -# define PHP_PINPOINT_PHP_API +#define PHP_PINPOINT_PHP_API #endif - #ifdef ZTS #include "TSRM.h" #endif ZEND_BEGIN_MODULE_GLOBALS(pinpoint_php) - char* co_host; // tcp:ip:port should support dns - zend_bool utest_flag; +char* co_host; // tcp:ip:port should support dns +zend_bool utest_flag; // zend_bool limit; - zend_bool debug_report; +zend_bool debug_report; #if PHP_VERSION_ID >= 70000 - zend_long tracelimit; - zend_long w_timeout_ms; +zend_long tracelimit; +zend_long w_timeout_ms; #else - int tracelimit; - int w_timeout_ms; +int tracelimit; +int w_timeout_ms; #endif ZEND_END_MODULE_GLOBALS(pinpoint_php) extern ZEND_DECLARE_MODULE_GLOBALS(pinpoint_php); #ifdef ZTS -#define PPG(v) TSRMG(pinpoint_php_globals_id, zend_pinpoint_php_globals *, v) +#define PPG(v) TSRMG(pinpoint_php_globals_id, zend_pinpoint_php_globals*, v) #else #define PPG(v) (pinpoint_php_globals.v) #endif @@ -71,4 +70,4 @@ PHP_MSHUTDOWN_FUNCTION(pinpoint_php); PHP_RINIT_FUNCTION(pinpoint_php); PHP_RSHUTDOWN_FUNCTION(pinpoint_php); PHP_MINFO_FUNCTION(pinpoint_php); -#endif /* PHP_PINPOINT_PHP_H */ +#endif /* PHP_PINPOINT_PHP_H */ diff --git a/src/PHP/pinpoint_php.cpp b/src/PHP/pinpoint_php.cpp index d4fe9dda3..98524a60d 100644 --- a/src/PHP/pinpoint_php.cpp +++ b/src/PHP/pinpoint_php.cpp @@ -72,23 +72,27 @@ PHP_FUNCTION(pinpoint_get_func_ref_args); ZEND_DECLARE_MODULE_GLOBALS(pinpoint_php) -static void pinpoint_log(char *msg); +static void pinpoint_log(char* msg); /* {{{ PHP_INI */ PHP_INI_BEGIN() -STD_PHP_INI_ENTRY("pinpoint_php.SendSpanTimeOutMs", "0", PHP_INI_ALL, OnUpdateLong, w_timeout_ms, zend_pinpoint_php_globals, pinpoint_php_globals) +STD_PHP_INI_ENTRY("pinpoint_php.SendSpanTimeOutMs", "0", PHP_INI_ALL, OnUpdateLong, w_timeout_ms, + zend_pinpoint_php_globals, pinpoint_php_globals) -STD_PHP_INI_ENTRY("pinpoint_php.CollectorHost", "unix:/tmp/collector.sock", PHP_INI_ALL, OnUpdateString, co_host, zend_pinpoint_php_globals, - pinpoint_php_globals) +STD_PHP_INI_ENTRY("pinpoint_php.CollectorHost", "unix:/tmp/collector.sock", PHP_INI_ALL, + OnUpdateString, co_host, zend_pinpoint_php_globals, pinpoint_php_globals) -STD_PHP_INI_ENTRY("pinpoint_php.UnitTest", "no", PHP_INI_ALL, OnUpdateBool, utest_flag, zend_pinpoint_php_globals, pinpoint_php_globals) +STD_PHP_INI_ENTRY("pinpoint_php.UnitTest", "no", PHP_INI_ALL, OnUpdateBool, utest_flag, + zend_pinpoint_php_globals, pinpoint_php_globals) -STD_PHP_INI_ENTRY("pinpoint_php.TraceLimit", "-1", PHP_INI_ALL, OnUpdateLong, tracelimit, zend_pinpoint_php_globals, pinpoint_php_globals) +STD_PHP_INI_ENTRY("pinpoint_php.TraceLimit", "-1", PHP_INI_ALL, OnUpdateLong, tracelimit, + zend_pinpoint_php_globals, pinpoint_php_globals) -STD_PHP_INI_ENTRY("pinpoint_php.DebugReport", "no", PHP_INI_ALL, OnUpdateBool, debug_report, zend_pinpoint_php_globals, pinpoint_php_globals) +STD_PHP_INI_ENTRY("pinpoint_php.DebugReport", "no", PHP_INI_ALL, OnUpdateBool, debug_report, + zend_pinpoint_php_globals, pinpoint_php_globals) PHP_INI_END() @@ -135,13 +139,17 @@ ZEND_END_ARG_INFO() * Every user visible function must have an entry in pinpioint_php_functions[]. */ const zend_function_entry pinpoint_php_functions[] = { - PHP_FE(pinpoint_start_trace, arginfo_add_id) PHP_FE(pinpoint_end_trace, arginfo_add_id) PHP_FE(pinpoint_unique_id, arginfo_none) - PHP_FE(pinpoint_get_func_ref_args, arginfo_none) PHP_FE(pinpoint_drop_trace, arginfo_add_id) PHP_FE(pinpoint_start_time, arginfo_none) - PHP_FE(pinpoint_set_context, arginfo_add_id_key_value) PHP_FE(pinpoint_get_context, arginfo_add_id_value) - PHP_FE(pinpoint_tracelimit, arginfo_add_timestamp) PHP_FE(pinpoint_mark_as_error, arginfo_add_msg_filename_lineno_id) - PHP_FE(pinpoint_add_clue, arginfo_add_id_key_value_flag) PHP_FE(pinpoint_add_clues, arginfo_add_id_key_value_flag) - PHP_FE_END /* Must be the last line in - pinpioint_php_functions[] */ + PHP_FE(pinpoint_start_trace, arginfo_add_id) PHP_FE(pinpoint_end_trace, arginfo_add_id) + PHP_FE(pinpoint_unique_id, arginfo_none) PHP_FE(pinpoint_get_func_ref_args, arginfo_none) + PHP_FE(pinpoint_drop_trace, arginfo_add_id) PHP_FE(pinpoint_start_time, arginfo_none) + PHP_FE(pinpoint_set_context, arginfo_add_id_key_value) + PHP_FE(pinpoint_get_context, arginfo_add_id_value) + PHP_FE(pinpoint_tracelimit, arginfo_add_timestamp) + PHP_FE(pinpoint_mark_as_error, arginfo_add_msg_filename_lineno_id) + PHP_FE(pinpoint_add_clue, arginfo_add_id_key_value_flag) + PHP_FE(pinpoint_add_clues, arginfo_add_id_key_value_flag) + PHP_FE_END /* Must be the last line in + pinpioint_php_functions[] */ }; /* }}} */ @@ -149,35 +157,38 @@ const zend_function_entry pinpoint_php_functions[] = { */ zend_module_entry pinpoint_php_module_entry = { #if ZEND_MODULE_API_NO >= 20010901 - STANDARD_MODULE_HEADER, + STANDARD_MODULE_HEADER, #endif - "pinpoint_php", pinpoint_php_functions, PHP_MINIT(pinpoint_php), PHP_MSHUTDOWN(pinpoint_php), - PHP_RINIT(pinpoint_php), /* Replace with NULL if there's nothing to do at - request start */ - PHP_RSHUTDOWN(pinpoint_php), /* Replace with NULL if there's nothing to do - at request end */ - PHP_MINFO(pinpoint_php), + "pinpoint_php", + pinpoint_php_functions, + PHP_MINIT(pinpoint_php), + PHP_MSHUTDOWN(pinpoint_php), + PHP_RINIT(pinpoint_php), /* Replace with NULL if there's nothing to do at request start */ + PHP_RSHUTDOWN(pinpoint_php), /* Replace with NULL if there's nothing to do at request end */ + PHP_MINFO(pinpoint_php), #if ZEND_MODULE_API_NO >= 20010901 - PHP_PINPOINT_PHP_VERSION, + PHP_PINPOINT_PHP_VERSION, #endif - STANDARD_MODULE_PROPERTIES}; + STANDARD_MODULE_PROPERTIES}; /* }}} */ #if PHP_VERSION_ID >= 80100 -void (*old_error_cb)(int type, zend_string *error_filename, const uint32_t error_lineno, zend_string *message); +void (*old_error_cb)(int type, zend_string* error_filename, const uint32_t error_lineno, + zend_string* message); #elif PHP_VERSION_ID >= 80000 -void (*old_error_cb)(int type, const char *error_filename, const uint32_t error_lineno, zend_string *message); +void (*old_error_cb)(int type, const char* error_filename, const uint32_t error_lineno, + zend_string* message); #else -void (*old_error_cb)(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args); +void (*old_error_cb)(int type, const char* error_filename, const uint error_lineno, + const char* format, va_list args); #endif -#define safe_free(x) \ - if ((x)) { \ - free((x)); \ - (x) = NULL; \ +#define safe_free(x) \ + if ((x)) { \ + free((x)); \ + (x) = NULL; \ } -PHP_FUNCTION(pinpoint_drop_trace) -{ +PHP_FUNCTION(pinpoint_drop_trace) { long _id = -1; NodeID id = E_ROOT_NODE, cur_id = E_ROOT_NODE; #if PHP_VERSION_ID < 70000 @@ -189,29 +200,29 @@ PHP_FUNCTION(pinpoint_drop_trace) if (_id == -1) { id = pinpoint_get_per_thread_id(); } else { - id = (NodeID) _id; + id = (NodeID)_id; } mark_current_trace_status(id, E_TRACE_BLOCK); RETURN_TRUE; } -PHP_FUNCTION(pinpoint_set_context) -{ +PHP_FUNCTION(pinpoint_set_context) { long _id = -1; std::string key; - zval *zvalue; + zval* zvalue; #if PHP_VERSION_ID < 70000 - char *zkey = NULL; + char* zkey = NULL; int zkey_len; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|l", &zkey, &zkey_len, &zvalue, &_id) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz|l", &zkey, &zkey_len, &zvalue, &_id) == + FAILURE) { zend_error(E_ERROR, "key/value required"); return; } key = std::string(zkey, zkey_len); #else - zend_string *zkey; + zend_string* zkey; if (zend_parse_parameters(ZEND_NUM_ARGS(), "Sz|l", &zkey, &zvalue, &_id) == FAILURE) { zend_error(E_ERROR, "key/value required"); return; @@ -225,26 +236,25 @@ PHP_FUNCTION(pinpoint_set_context) } switch (Z_TYPE_P(zvalue)) { - // case IS_LONG: - // pinpoint_set_context_long(_id,key.c_str(),Z_LVAL_P(zvalue)); - // break; - case IS_STRING: { - std::string value(Z_STRVAL_P(zvalue), Z_STRLEN_P(zvalue)); - pinpoint_set_context_key((NodeID) _id, key.c_str(), value.c_str()); - } break; - default: - zend_error(E_WARNING, "value only support string"); - return; + // case IS_LONG: + // pinpoint_set_context_long(_id,key.c_str(),Z_LVAL_P(zvalue)); + // break; + case IS_STRING: { + std::string value(Z_STRVAL_P(zvalue), Z_STRLEN_P(zvalue)); + pinpoint_set_context_key((NodeID)_id, key.c_str(), value.c_str()); + } break; + default: + zend_error(E_WARNING, "value only support string"); + return; } RETURN_TRUE; } -PHP_FUNCTION(pinpoint_get_context) -{ +PHP_FUNCTION(pinpoint_get_context) { long _id = -1; std::string key; #if PHP_VERSION_ID < 70000 - char *zkey = NULL; + char* zkey = NULL; int zkey_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &zkey, &zkey_len, &_id) == FAILURE) { @@ -254,7 +264,7 @@ PHP_FUNCTION(pinpoint_get_context) key = std::string(zkey, zkey_len); #else - zend_string *zkey; + zend_string* zkey; if (zend_parse_parameters(ZEND_NUM_ARGS(), "S|l", &zkey, &_id) == FAILURE) { zend_error(E_ERROR, "key/value required"); return; @@ -262,9 +272,11 @@ PHP_FUNCTION(pinpoint_get_context) key = std::string(zkey->val, zkey->len); #endif - if (_id == -1) { _id = pinpoint_get_per_thread_id(); } + if (_id == -1) { + _id = pinpoint_get_per_thread_id(); + } char value[1024] = {0}; - int len = pinpoint_get_context_key((NodeID) _id, key.c_str(), value, 1024); + int len = pinpoint_get_context_key((NodeID)_id, key.c_str(), value, 1024); if (len > 0) { #if PHP_VERSION_ID < 70000 RETURN_STRINGL(value, len, 1); @@ -278,8 +290,7 @@ PHP_FUNCTION(pinpoint_get_context) PHP_FUNCTION(pinpoint_start_time) { RETURN_LONG(pinpoint_start_time()); } -PHP_FUNCTION(pinpoint_start_trace) -{ +PHP_FUNCTION(pinpoint_start_trace) { long _id = -1; NodeID id = E_ROOT_NODE, cur_id = E_ROOT_NODE; #if PHP_VERSION_ID < 70000 @@ -291,30 +302,30 @@ PHP_FUNCTION(pinpoint_start_trace) id = pinpoint_get_per_thread_id(); cur_id = pinpoint_start_trace(id); pinpoint_update_per_thread_id(cur_id); - RETURN_LONG((long) cur_id); + RETURN_LONG((long)cur_id); } else { - id = (NodeID) _id; + id = (NodeID)_id; cur_id = pinpoint_start_trace(id); - RETURN_LONG((long) cur_id); + RETURN_LONG((long)cur_id); } } #if PHP_VERSION_ID >= 80100 -void apm_error_cb(int type, zend_string *_error_filename, const uint32_t error_lineno, zend_string *_message) -{ - char *error_filename = _error_filename->val; - char *msg = _message->val; +void apm_error_cb(int type, zend_string* _error_filename, const uint32_t error_lineno, + zend_string* _message) { + char* error_filename = _error_filename->val; + char* msg = _message->val; #elif PHP_VERSION_ID >= 80000 -void apm_error_cb(int type, const char *_error_filename, const uint32_t error_lineno, zend_string *_message) -{ - char *msg = _message->val; - const char *error_filename = _error_filename; +void apm_error_cb(int type, const char* _error_filename, const uint32_t error_lineno, + zend_string* _message) { + char* msg = _message->val; + const char* error_filename = _error_filename; #else -void apm_error_cb(int type, const char *error_filename, const uint error_lineno, const char *format, va_list args) -{ - char *msg; +void apm_error_cb(int type, const char* error_filename, const uint error_lineno, const char* format, + va_list args) { + char* msg; va_list args_copy; #if PHP_VERSION_ID < 80000 TSRMLS_FETCH(); @@ -325,7 +336,12 @@ void apm_error_cb(int type, const char *error_filename, const uint error_lineno, #endif - if (!(EG(error_reporting) & type)) { return; } + if (!(EG(error_reporting) & type)) { +#if PHP_VERSION_ID < 80000 + efree(msg); +#endif + return; + } catch_error(pinpoint_get_per_thread_id(), msg, error_filename, error_lineno); @@ -342,8 +358,7 @@ void apm_error_cb(int type, const char *error_filename, const uint error_lineno, #endif } -PHP_FUNCTION(pinpoint_end_trace) -{ +PHP_FUNCTION(pinpoint_end_trace) { long _id = -1; NodeID id = E_ROOT_NODE, cur_id = E_ROOT_NODE; @@ -357,16 +372,15 @@ PHP_FUNCTION(pinpoint_end_trace) id = pinpoint_get_per_thread_id(); cur_id = pinpoint_end_trace(id); pinpoint_update_per_thread_id(cur_id); - RETURN_LONG((long) cur_id); + RETURN_LONG((long)cur_id); } else { - id = (NodeID) _id; + id = (NodeID)_id; cur_id = pinpoint_end_trace(id); - RETURN_LONG((long) cur_id); + RETURN_LONG((long)cur_id); } } -PHP_FUNCTION(pinpoint_add_clue) -{ +PHP_FUNCTION(pinpoint_add_clue) { std::string key; std::string value; long _id = -1; @@ -375,7 +389,8 @@ PHP_FUNCTION(pinpoint_add_clue) char *zkey = NULL, *zvalue = NULL; int zkey_len, value_len; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ll", &zkey, &zkey_len, &zvalue, &value_len, &_id, &_flag) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ll", &zkey, &zkey_len, &zvalue, + &value_len, &_id, &_flag) == FAILURE) { zend_error(E_ERROR, "pinpoint_add_clue() expects (int, string)."); return; } @@ -383,8 +398,8 @@ PHP_FUNCTION(pinpoint_add_clue) value = std::string(zvalue, value_len); #else - zend_string *zkey; - zend_string *zvalue; + zend_string* zkey; + zend_string* zvalue; if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS|ll", &zkey, &zvalue, &_id, &_flag) == FAILURE) { zend_error(E_ERROR, "pinpoint_add_clue() expects (int, string)."); return; @@ -392,14 +407,13 @@ PHP_FUNCTION(pinpoint_add_clue) key = std::string(zkey->val, zkey->len); value = std::string(zvalue->val, zvalue->len); #endif - NodeID Id = (_id == -1) ? (pinpoint_get_per_thread_id()) : ((NodeID) _id); - pinpoint_add_clue(Id, key.c_str(), value.c_str(), (E_NODE_LOC) _flag); + NodeID Id = (_id == -1) ? (pinpoint_get_per_thread_id()) : ((NodeID)_id); + pinpoint_add_clue(Id, key.c_str(), value.c_str(), (E_NODE_LOC)_flag); } PHP_FUNCTION(pinpoint_unique_id) { RETURN_LONG(generate_unique_id()); } -PHP_FUNCTION(pinpoint_mark_as_error) -{ +PHP_FUNCTION(pinpoint_mark_as_error) { std::string msg; std::string fileName; long _lineno = 0; @@ -408,15 +422,16 @@ PHP_FUNCTION(pinpoint_mark_as_error) char *zkey = NULL, *zvalue = NULL; int zkey_len, value_len; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ll", &zkey, &zkey_len, &zvalue, &value_len, &_lineno, &_id) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ll", &zkey, &zkey_len, &zvalue, + &value_len, &_lineno, &_id) == FAILURE) { zend_error(E_ERROR, "pinpoint_mark_as_error() expects (string,string,int,int)."); return; } msg = std::string(zkey, zkey_len); fileName = std::string(zvalue, value_len); #else - zend_string *zkey; - zend_string *zvalue; + zend_string* zkey; + zend_string* zvalue; if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS|ll", &zkey, &zvalue, &_lineno, &_id) == FAILURE) { zend_error(E_ERROR, "pinpoint_mark_as_error() expects (string,string,int,int)."); return; @@ -424,12 +439,11 @@ PHP_FUNCTION(pinpoint_mark_as_error) msg = std::string(zkey->val, zkey->len); fileName = std::string(zvalue->val, zvalue->len); #endif - NodeID id = (_id == -1) ? (pinpoint_get_per_thread_id()) : ((NodeID) _id); + NodeID id = (_id == -1) ? (pinpoint_get_per_thread_id()) : ((NodeID)_id); catch_error(id, msg.c_str(), fileName.c_str(), _lineno); } -PHP_FUNCTION(pinpoint_add_clues) -{ +PHP_FUNCTION(pinpoint_add_clues) { std::string key; std::string value; long _id = -1; @@ -438,15 +452,16 @@ PHP_FUNCTION(pinpoint_add_clues) char *zkey = NULL, *zvalue = NULL; int zkey_len, value_len; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ll", &zkey, &zkey_len, &zvalue, &value_len, &_id, &_flag) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ll", &zkey, &zkey_len, &zvalue, + &value_len, &_id, &_flag) == FAILURE) { zend_error(E_ERROR, "pinpoint_add_clues() expects (int, string)."); return; } key = std::string(zkey, zkey_len); value = std::string(zvalue, value_len); #else - zend_string *zkey; - zend_string *zvalue; + zend_string* zkey; + zend_string* zvalue; if (zend_parse_parameters(ZEND_NUM_ARGS(), "SS|ll", &zkey, &zvalue, &_id, &_flag) == FAILURE) { zend_error(E_ERROR, "pinpoint_add_clues() expects (int, string)."); return; @@ -454,8 +469,8 @@ PHP_FUNCTION(pinpoint_add_clues) key = std::string(zkey->val, zkey->len); value = std::string(zvalue->val, zvalue->len); #endif - NodeID id = (_id == -1) ? (pinpoint_get_per_thread_id()) : ((NodeID) _id); - pinpoint_add_clues(id, key.c_str(), value.c_str(), (E_NODE_LOC) _flag); + NodeID id = (_id == -1) ? (pinpoint_get_per_thread_id()) : ((NodeID)_id); + pinpoint_add_clues(id, key.c_str(), value.c_str(), (E_NODE_LOC)_flag); } /** @@ -463,50 +478,49 @@ PHP_FUNCTION(pinpoint_add_clues) * ZEND_FUNCTION(func_get_args) * disable ZVAL_DEREF(p) make it works */ -PHP_FUNCTION(pinpoint_get_func_ref_args) -{ +PHP_FUNCTION(pinpoint_get_func_ref_args) { #if PHP_VERSION_ID < 70000 - void **p; + void** p; int arg_count; int i; - zend_execute_data *ex = EG(current_execute_data)->prev_execute_data; + zend_execute_data* ex = EG(current_execute_data)->prev_execute_data; if (!ex || !ex->function_state.arguments) { - zend_error(E_WARNING, - "pinpoint_get_func_ref_args(): Called from the " - "global scope - no function context"); + zend_error(E_WARNING, "pinpoint_get_func_ref_args(): Called from the " + "global scope - no function context"); RETURN_FALSE; } p = ex->function_state.arguments; - arg_count = (int) (zend_uintptr_t) *p; /* this is the amount of arguments passed - to func_get_args(); */ + arg_count = (int)(zend_uintptr_t)*p; /* this is the amount of arguments passed + to func_get_args(); */ array_init_size(return_value, arg_count); for (i = 0; i < arg_count; i++) { zval *element, *arg; - arg = *((zval **) (p - (arg_count - i))); + arg = *((zval**)(p - (arg_count - i))); element = arg; Z_ADDREF_P(element); - zend_hash_next_index_insert(return_value->value.ht, &element, sizeof(zval *), NULL); + zend_hash_next_index_insert(return_value->value.ht, &element, sizeof(zval*), NULL); } #else zval *p, *q; uint32_t arg_count, first_extra_arg; uint32_t i, n; - zend_execute_data *ex = EX(prev_execute_data); + zend_execute_data* ex = EX(prev_execute_data); if (ZEND_CALL_INFO(ex) & ZEND_CALL_CODE) { - zend_error(E_WARNING, - "pinpoint_get_func_ref_args(): Called from the " - "global scope - no function context"); + zend_error(E_WARNING, "pinpoint_get_func_ref_args(): Called from the " + "global scope - no function context"); RETURN_FALSE; } #if PHP_VERSION_ID > 70033 - if (zend_forbid_dynamic_call("pinpoint_get_func_ref_args()") == FAILURE) { RETURN_FALSE; } + if (zend_forbid_dynamic_call("pinpoint_get_func_ref_args()") == FAILURE) { + RETURN_FALSE; + } #endif arg_count = ZEND_CALL_NUM_ARGS(ex); @@ -514,35 +528,38 @@ PHP_FUNCTION(pinpoint_get_func_ref_args) if (arg_count) { first_extra_arg = ex->func->op_array.num_args; zend_hash_real_init(Z_ARRVAL_P(return_value), 1); - ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) - { + ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) { i = 0; n = 0; p = ZEND_CALL_ARG(ex, 1); if (arg_count > first_extra_arg) { - while (i < first_extra_arg) { - q = p; - if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) { - // ZVAL_DEREF(q); - if (Z_OPT_REFCOUNTED_P(q)) { Z_ADDREF_P(q); } - n++; - } - ZEND_HASH_FILL_ADD(q); - p++; - i++; - } - p = ZEND_CALL_VAR_NUM(ex, ex->func->op_array.last_var + ex->func->op_array.T); + while (i < first_extra_arg) { + q = p; + if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) { + // ZVAL_DEREF(q); + if (Z_OPT_REFCOUNTED_P(q)) { + Z_ADDREF_P(q); + } + n++; + } + ZEND_HASH_FILL_ADD(q); + p++; + i++; + } + p = ZEND_CALL_VAR_NUM(ex, ex->func->op_array.last_var + ex->func->op_array.T); } while (i < arg_count) { - q = p; - if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) { - // ZVAL_DEREF(q); - if (Z_OPT_REFCOUNTED_P(q)) { Z_ADDREF_P(q); } - n++; - } - ZEND_HASH_FILL_ADD(q); - p++; - i++; + q = p; + if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) { + // ZVAL_DEREF(q); + if (Z_OPT_REFCOUNTED_P(q)) { + Z_ADDREF_P(q); + } + n++; + } + ZEND_HASH_FILL_ADD(q); + p++; + i++; } } ZEND_HASH_FILL_END(); @@ -551,8 +568,7 @@ PHP_FUNCTION(pinpoint_get_func_ref_args) #endif } -PHP_FUNCTION(pinpoint_tracelimit) -{ +PHP_FUNCTION(pinpoint_tracelimit) { long timestamp = -1; #if PHP_VERSION_ID < 70000 @@ -575,8 +591,7 @@ PHP_FUNCTION(pinpoint_tracelimit) */ /* Uncomment this function if you have INI entries */ -static void php_pinpoint_php_init_globals(zend_pinpoint_php_globals *pinpoint_php_globals) -{ +static void php_pinpoint_php_init_globals(zend_pinpoint_php_globals* pinpoint_php_globals) { memset(pinpoint_php_globals, 0, sizeof(zend_pinpoint_php_globals)); } @@ -585,8 +600,7 @@ static void php_pinpoint_php_init_globals(zend_pinpoint_php_globals *pinpoint_ph /* {{{ PHP_MINIT_FUNCTION */ -PHP_MINIT_FUNCTION(pinpoint_php) -{ +PHP_MINIT_FUNCTION(pinpoint_php) { ZEND_INIT_MODULE_GLOBALS(pinpoint_php, php_pinpoint_php_init_globals, NULL); REGISTER_INI_ENTRIES(); @@ -597,7 +611,7 @@ PHP_MINIT_FUNCTION(pinpoint_php) global_agent_info.inter_flag = PPG(debug_report); global_agent_info.timeout_ms = PPG(w_timeout_ms); global_agent_info.trace_limit = PPG(tracelimit); - global_agent_info.agent_type = 1500; // PHP + global_agent_info.agent_type = 1500; // PHP if (PPG(utest_flag) == 1) { global_agent_info.inter_flag |= E_UTEST; @@ -611,8 +625,7 @@ PHP_MINIT_FUNCTION(pinpoint_php) /* {{{ PHP_MSHUTDOWN_FUNCTION */ -PHP_MSHUTDOWN_FUNCTION(pinpoint_php) -{ +PHP_MSHUTDOWN_FUNCTION(pinpoint_php) { /* uncomment this line if you have INI entries UNREGISTER_INI_ENTRIES(); */ @@ -624,8 +637,8 @@ PHP_MSHUTDOWN_FUNCTION(pinpoint_php) /* Remove if there's nothing to do at request start */ /* {{{ PHP_RINIT_FUNCTION */ -PHP_RINIT_FUNCTION(pinpoint_php) -{ +PHP_RINIT_FUNCTION(pinpoint_php) { + #if defined(COMPILE_DL_PINPIOINT_PHP) && defined(ZTS) ZEND_TSRMLS_CACHE_UPDATE(); #endif @@ -637,8 +650,7 @@ PHP_RINIT_FUNCTION(pinpoint_php) /* Remove if there's nothing to do at request end */ /* {{{ PHP_RSHUTDOWN_FUNCTION */ -PHP_RSHUTDOWN_FUNCTION(pinpoint_php) -{ +PHP_RSHUTDOWN_FUNCTION(pinpoint_php) { NodeID _id = pinpoint_get_per_thread_id(); if (_id != 0) { pinpoint_force_end_trace(_id, 300); @@ -651,8 +663,7 @@ PHP_RSHUTDOWN_FUNCTION(pinpoint_php) /* {{{ PHP_MINFO_FUNCTION */ -PHP_MINFO_FUNCTION(pinpoint_php) -{ +PHP_MINFO_FUNCTION(pinpoint_php) { php_info_print_table_start(); php_info_print_table_header(2, "pinpoint_php support", "enabled"); php_info_print_table_end(); @@ -663,8 +674,7 @@ PHP_MINFO_FUNCTION(pinpoint_php) } /* }}} */ -void pinpoint_log(char *msg) -{ +void pinpoint_log(char* msg) { #if PHP_VERSION_ID >= 70100 php_log_err_with_severity(msg, LOG_DEBUG); #else diff --git a/testapps/PHP/.gitignore b/testapps/PHP/.gitignore deleted file mode 100644 index 7846e89ed..000000000 --- a/testapps/PHP/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -.idea -composer.lock -*.log -thinkphp diff --git a/testapps/PHP/.travis.yml b/testapps/PHP/.travis.yml deleted file mode 100644 index 36f7b6f90..000000000 --- a/testapps/PHP/.travis.yml +++ /dev/null @@ -1,42 +0,0 @@ -sudo: false - -language: php - -branches: - only: - - stable - -cache: - directories: - - $HOME/.composer/cache - -before_install: - - composer self-update - -install: - - composer install --no-dev --no-interaction --ignore-platform-reqs - - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Core.zip . - - composer require --update-no-dev --no-interaction "topthink/think-image:^1.0" - - composer require --update-no-dev --no-interaction "topthink/think-migration:^1.0" - - composer require --update-no-dev --no-interaction "topthink/think-captcha:^1.0" - - composer require --update-no-dev --no-interaction "topthink/think-mongo:^1.0" - - composer require --update-no-dev --no-interaction "topthink/think-worker:^1.0" - - composer require --update-no-dev --no-interaction "topthink/think-helper:^1.0" - - composer require --update-no-dev --no-interaction "topthink/think-queue:^1.0" - - composer require --update-no-dev --no-interaction "topthink/think-angular:^1.0" - - composer require --dev --update-no-dev --no-interaction "topthink/think-testing:^1.0" - - zip -r --exclude='*.git*' --exclude='*.zip' --exclude='*.travis.yml' ThinkPHP_Full.zip . - -script: - - php think unit - -deploy: - provider: releases - api_key: - secure: TSF6bnl2JYN72UQOORAJYL+CqIryP2gHVKt6grfveQ7d9rleAEoxlq6PWxbvTI4jZ5nrPpUcBUpWIJHNgVcs+bzLFtyh5THaLqm39uCgBbrW7M8rI26L8sBh/6nsdtGgdeQrO/cLu31QoTzbwuz1WfAVoCdCkOSZeXyT/CclH99qV6RYyQYqaD2wpRjrhA5O4fSsEkiPVuk0GaOogFlrQHx+C+lHnf6pa1KxEoN1A0UxxVfGX6K4y5g4WQDO5zT4bLeubkWOXK0G51XSvACDOZVIyLdjApaOFTwamPcD3S1tfvuxRWWvsCD5ljFvb2kSmx5BIBNwN80MzuBmrGIC27XLGOxyMerwKxB6DskNUO9PflKHDPI61DRq0FTy1fv70SFMSiAtUv9aJRT41NQh9iJJ0vC8dl+xcxrWIjU1GG6+l/ZcRqVx9V1VuGQsLKndGhja7SQ+X1slHl76fRq223sMOql7MFCd0vvvxVQ2V39CcFKao/LB1aPH3VhODDEyxwx6aXoTznvC/QPepgWsHOWQzKj9ftsgDbsNiyFlXL4cu8DWUty6rQy8zT2b4O8b1xjcwSUCsy+auEjBamzQkMJFNlZAIUrukL/NbUhQU37TAbwsFyz7X0E/u/VMle/nBCNAzgkMwAUjiHM6FqrKKBRWFbPrSIixjfjkCnrMEPw= - file: - - ThinkPHP_Core.zip - - ThinkPHP_Full.zip - skip_cleanup: true - on: - tags: true diff --git a/testapps/PHP/LICENSE.txt b/testapps/PHP/LICENSE.txt deleted file mode 100644 index 774fa76fd..000000000 --- a/testapps/PHP/LICENSE.txt +++ /dev/null @@ -1,32 +0,0 @@ - -ThinkPHP遵循Apache2开源协议发布,并提供免费使用。 -版权所有Copyright © 2006-2018 by ThinkPHP (http://thinkphp.cn) -All rights reserved。 -ThinkPHP® 商标和著作权所有者为上海顶想信息科技有限公司。 - -Apache Licence是著名的非盈利开源组织Apache采用的协议。 -该协议和BSD类似,鼓励代码共享和尊重原作者的著作权, -允许代码修改,再作为开源或商业软件发布。需要满足 -的条件: -1. 需要给代码的用户一份Apache Licence ; -2. 如果你修改了代码,需要在被修改的文件中说明; -3. 在延伸的代码中(修改和有源代码衍生的代码中)需要 -带有原来代码中的协议,商标,专利声明和其他原来作者规 -定需要包含的说明; -4. 如果再发布的产品中包含一个Notice文件,则在Notice文 -件中需要带有本协议内容。你可以在Notice中增加自己的 -许可,但不可以表现为对Apache Licence构成更改。 -具体的协议参考:http://www.apache.org/licenses/LICENSE-2.0 - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/testapps/PHP/Plugins/AutoGen/app/CommonPlugin.php b/testapps/PHP/Plugins/AutoGen/app/CommonPlugin.php deleted file mode 100644 index 507eed73d..000000000 --- a/testapps/PHP/Plugins/AutoGen/app/CommonPlugin.php +++ /dev/null @@ -1,57 +0,0 @@ -args,true)); - } - - ///@hook:app\common\DBcontrol::getData1 app\common\DBcontrol::\array_push - public function onEnd(&$ret){ - pinpoint_add_clues(PP_PHP_RETURN,print_r($ret,true)); - } - - ///@hook:app\common\DBcontrol::getData2 - public function onException($e){ - pinpoint_add_clue("EXP",$e->getMessage()); - } -} diff --git a/testapps/PHP/Plugins/AutoGen/app/Generator.php b/testapps/PHP/Plugins/AutoGen/app/Generator.php deleted file mode 100644 index a2a522106..000000000 --- a/testapps/PHP/Plugins/AutoGen/app/Generator.php +++ /dev/null @@ -1,78 +0,0 @@ -_name_list []= "next"; // hook Generator::next - } - - protected function onBefore() - { - parent::onBefore(); - ##################################### -// echo "--------------------------before"; - pinpoint_add_clue("stp",PP_PHP_METHOD); - pinpoint_add_clues(PP_PHP_ARGS,"--placeholder---"); - ##################################### - } - protected function onEnd(&$ret) - { - ##################################### - -// echo "--------------------------end"; - pinpoint_add_clues(PP_PHP_RETURN,"--placeholder---"); - ##################################### - parent::onEnd($ret); - } - - protected function onException($e) - { - // do nothing - } - - public function current() - { - return $this->_instance->current(); - } - - public function next() - { - return $this->__call(__FUNCTION__, []); - } - - public function key() - { - return $this->_instance->key(); - } - - public function valid() - { - return $this->_instance->valid(); - } - - public function rewind() - { - return $this->_instance->rewind(); - } -} \ No newline at end of file diff --git a/testapps/PHP/Plugins/AutoGen/app/GeneratorPlugin.php b/testapps/PHP/Plugins/AutoGen/app/GeneratorPlugin.php deleted file mode 100644 index f80b174ef..000000000 --- a/testapps/PHP/Plugins/AutoGen/app/GeneratorPlugin.php +++ /dev/null @@ -1,38 +0,0 @@ -getMessage()); - } -} \ No newline at end of file diff --git a/testapps/PHP/Plugins/setting.ini b/testapps/PHP/Plugins/setting.ini deleted file mode 100644 index 180dea527..000000000 --- a/testapps/PHP/Plugins/setting.ini +++ /dev/null @@ -1,33 +0,0 @@ -[nm_class] -;rename below class -PDO=Pinpoint\Plugins\Sys\PDO\PDO -Memcached=Pinpoint\Plugins\Sys\Memcached\Memcached -Redis=Pinpoint\Plugins\Sys\phpredis\PRedis -mysqli=Pinpoint\Plugins\Sys\mysqli\mysqli -RdKafka\Producer=Pinpoint\Plugins\Sys\RdKafka\Producer - -[nm_func] -;rename below system function -date=Pinpoint\Plugins\Sys\date\date -curl_init=Pinpoint\Plugins\Sys\curl\curl_init -curl_setopt=Pinpoint\Plugins\Sys\curl\curl_setopt -curl_exec=Pinpoint\Plugins\Sys\curl\curl_exec -curl_close=Pinpoint\Plugins\Sys\curl\curl_close -curl_setopt_array=Pinpoint\Plugins\Sys\curl\curl_setopt_array - -[nm_string] -; I am not lazy, does user real need this? -[nm_add_class] -;expand above setting into below class -; class_name[]=app\common\TestMemcached -; class_name[]=app\common\TestMysqli -; class_name[]=app\common\TestKafka -class_name[]=app\common\TestGuzzle -class_name[]=app\common\AccessRemote -class_name[]=app\common\TestRedis -class_name[]=app\common\AppDate -class_name[]=think\db\Connection -class_name[]=think\cache\driver\Redis - -[nm_ignore_class] -;ho ho, do not change in below class diff --git a/testapps/PHP/Readme.md b/testapps/PHP/Readme.md deleted file mode 100644 index b1dd1e34a..000000000 --- a/testapps/PHP/Readme.md +++ /dev/null @@ -1,31 +0,0 @@ -## How to start testapp -1. Install Composer. [How to Use Composer?](https://getcomposer.org/doc/00-intro.md) -2. Execute `composer install` or `composer update`. -3. Import pinpoint entry header into public/index.php as below - ## start.php - ``` - run()->send(); - ``` -4. Start testapp by executing `php think run`. \ No newline at end of file diff --git a/testapps/PHP/application/.htaccess b/testapps/PHP/application/.htaccess deleted file mode 100644 index 3418e55a6..000000000 --- a/testapps/PHP/application/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all \ No newline at end of file diff --git a/testapps/PHP/application/command.php b/testapps/PHP/application/command.php deleted file mode 100644 index 826bb2b23..000000000 --- a/testapps/PHP/application/command.php +++ /dev/null @@ -1,12 +0,0 @@ - -// +---------------------------------------------------------------------- - -return []; diff --git a/testapps/PHP/application/common.php b/testapps/PHP/application/common.php deleted file mode 100644 index 55d22f266..000000000 --- a/testapps/PHP/application/common.php +++ /dev/null @@ -1,12 +0,0 @@ - -// +---------------------------------------------------------------------- - -// 应用公共文件 diff --git a/testapps/PHP/application/common/AbstractPerson.php b/testapps/PHP/application/common/AbstractPerson.php deleted file mode 100644 index 1aa195338..000000000 --- a/testapps/PHP/application/common/AbstractPerson.php +++ /dev/null @@ -1,16 +0,0 @@ -name." is alive.
"; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/AbstractStudent.php b/testapps/PHP/application/common/AbstractStudent.php deleted file mode 100644 index 4810d2810..000000000 --- a/testapps/PHP/application/common/AbstractStudent.php +++ /dev/null @@ -1,24 +0,0 @@ -name = $name; - } - function eat(){ - return $this->name." is eating.
"; - } - function drink(){ - return $this->name." is drinking.
"; - } - -// function breath(){ -// return $this->name." is breathing.
"; -// } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/AccessRemote.php b/testapps/PHP/application/common/AccessRemote.php deleted file mode 100644 index ada5b4ded..000000000 --- a/testapps/PHP/application/common/AccessRemote.php +++ /dev/null @@ -1,39 +0,0 @@ -callExample(); - return $tmp; - } - - private function callExample() - { - $ch = \curl_init(); - - \curl_setopt($ch, CURLOPT_URL, "exmaple.com"); - - $tmp = \curl_exec($ch); - - curl_close($ch); - return $tmp; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/AopConfig.php b/testapps/PHP/application/common/AopConfig.php deleted file mode 100644 index 31b93234c..000000000 --- a/testapps/PHP/application/common/AopConfig.php +++ /dev/null @@ -1,5 +0,0 @@ -__DIR__."/../Plugins", - 'default_exception'=> Exception::class -); diff --git a/testapps/PHP/application/common/AopFunction.php b/testapps/PHP/application/common/AopFunction.php deleted file mode 100644 index b450d6085..000000000 --- a/testapps/PHP/application/common/AopFunction.php +++ /dev/null @@ -1,17 +0,0 @@ -"; - // echo getenv('REMOTE_ADDR')."
"; - // echo getenv('HTTP_HOST')."
"; - // echo getenv('HTTP_X_FORWARDED_FOR')."
"; - // echo getenv('HTTP_X_FORWARDED_HOST')."
"; - // echo getenv('HTTP_X_FORWARDED_SERVER')."
"; - // var_dump($_SERVER); -// throw new \Exception("I want throw something"); -// print_r(ini_get_all('pinpoint_php')); -// echo ini_get('pinpoint_php.CollectorHost')."\n"; -// echo ini_get('pinpoint_php.SendSpanTimeOutMs')."\n"; -// var_dump(ini_get('pinpoint_php.UnitTest"')); -// -// echo ini_get('pinpoint_php.AppId')."\n"; -// -// echo ini_get('pinpoint_php.StartTime'); -// print_r($_SERVER); - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/CallBackFunc.php b/testapps/PHP/application/common/CallBackFunc.php deleted file mode 100644 index 88fc7c095..000000000 --- a/testapps/PHP/application/common/CallBackFunc.php +++ /dev/null @@ -1,16 +0,0 @@ -"."msg2:".$msg2."
"; - } - - public function fnCallback2(){ - return "public function."; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/Doctor.php b/testapps/PHP/application/common/Doctor.php deleted file mode 100644 index 14c3fa804..000000000 --- a/testapps/PHP/application/common/Doctor.php +++ /dev/null @@ -1,12 +0,0 @@ -"; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/ExtendLevel.php b/testapps/PHP/application/common/ExtendLevel.php deleted file mode 100644 index eeab6aab6..000000000 --- a/testapps/PHP/application/common/ExtendLevel.php +++ /dev/null @@ -1,9 +0,0 @@ -vars[$name] = $var; - } - public function getHtml($template) - { - foreach($this->vars as $name => $value) { - $template = str_replace('{' . $name . '}', $value, $template); - } - return $template; - } - public function other($vars) - { - return $vars; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/LevelClass.php b/testapps/PHP/application/common/LevelClass.php deleted file mode 100644 index b23848e89..000000000 --- a/testapps/PHP/application/common/LevelClass.php +++ /dev/null @@ -1,23 +0,0 @@ -private_function(123); - return "Protected!".$a; - } - - public function public_function($a){ - $tmp1 = $this->private_function(123); - $tmp2 = $this->protected_function(123); - return "Public!".$a; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/OverRideLevel.php b/testapps/PHP/application/common/OverRideLevel.php deleted file mode 100644 index 6ed5eb42d..000000000 --- a/testapps/PHP/application/common/OverRideLevel.php +++ /dev/null @@ -1,21 +0,0 @@ -protected_function($a); - $tmp2 = parent::public_function($a); - return "Public func in subclass".$a; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/Person.php b/testapps/PHP/application/common/Person.php deleted file mode 100644 index 7c67fe7b7..000000000 --- a/testapps/PHP/application/common/Person.php +++ /dev/null @@ -1,11 +0,0 @@ -"; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/Student.php b/testapps/PHP/application/common/Student.php deleted file mode 100644 index d5564b23c..000000000 --- a/testapps/PHP/application/common/Student.php +++ /dev/null @@ -1,13 +0,0 @@ -"; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/Teacher.php b/testapps/PHP/application/common/Teacher.php deleted file mode 100644 index d3a716760..000000000 --- a/testapps/PHP/application/common/Teacher.php +++ /dev/null @@ -1,14 +0,0 @@ -"; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/TestAnonymous.php b/testapps/PHP/application/common/TestAnonymous.php deleted file mode 100644 index 5a724c02a..000000000 --- a/testapps/PHP/application/common/TestAnonymous.php +++ /dev/null @@ -1,23 +0,0 @@ -getMessage(); -// } - $res2 = $func1->test_func1("x", 3); - return $res1.$res2; - }; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/TestArgs.php b/testapps/PHP/application/common/TestArgs.php deleted file mode 100644 index b22bbac60..000000000 --- a/testapps/PHP/application/common/TestArgs.php +++ /dev/null @@ -1,13 +0,0 @@ -'.$long_arg.'
'.$double_arg.'
'.$bool_arg.'
'.$object_tostring_arg.'
'.$string_arg.'
'.$constant_arg.'
'; - return sprintf("%s
%s
%s
%s",$tmp,implode($array_arg),var_dump($object_arg),var_dump($resource_arg)); - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/TestClone.php b/testapps/PHP/application/common/TestClone.php deleted file mode 100644 index dde7b0c0c..000000000 --- a/testapps/PHP/application/common/TestClone.php +++ /dev/null @@ -1,25 +0,0 @@ -_color = $color; - } - /** - * @return string - */ - public function getColor() - { - return $this->name." color is ".$this->_color; - } - public function __clone() - { - $this->name = "ClonableName"; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/TestError.php b/testapps/PHP/application/common/TestError.php deleted file mode 100644 index 59968c258..000000000 --- a/testapps/PHP/application/common/TestError.php +++ /dev/null @@ -1,161 +0,0 @@ -getMessage(); - } - return $num; - } - - static function error() - { -// try{ - xxx(234.343,456345,"fad",[1,2,3]); -// }catch (Exception $e){ -// echo $e->getMessage(); -// } - } - - static function test_cumsum_e1($n) - { - if ($n < 1) throw new Exception("n < 1"); -// try { - $tmp = $n + static::test_cumsum_e1($n - 1); -// }catch (Exception $e){ -// echo $e->getMessage(); -// } - return $tmp; - } - - public function testRetParm(&$arg){ - // unset($arg); - $arg = "bbbb"; - echo "aaaaaaa"; - return $arg; - } - - public function testRetConst(&$arg){ -// unset($arg); - $arg = "bbbb"; - echo "aaaaaaa"; - return "adfadf"; - } - - public function testRetConstAndExp(&$arg){ - // unset($arg); - $arg = "bbbb"; - throw new Exception("sssssssssssssss"); - echo "aaaaaaa"; - return "adfadf"; - } - - public function testRetArgAndExp(&$arg){ -// unset($arg); - $arg = "bbbb"; - throw new Exception("sssssssssssssss"); - echo "aaaaaaa"; - return $arg[0]; - } - - public function Strict(&$arg){ - echo "Test"; - } - - - private function test_cumsum1($n) - { - if ($n == 1) return 1; - return $n + $this->test_cumsum1($n - 1); - } - - private function test_cumsum2($n) - { - if ($n == 1) return 1; - return $n + $this->test_cumsum2($n - 1); - } - - private function test_cumsum3($n) - { - if ($n < 1) throw new \Exception("n < 1"); - $tmp = $n; -// try -// { - $tmp += $this->test_cumsum3($n-1); -// } -// catch( Exception $e) -// { -// } - return $tmp; - } - - private function test_cumsum4($n) - { - if ($n < 1) throw new Exception("n < 1"); - $tmp = $n; - try - { - $tmp += $this->test_cumsum4($n-1); - } - catch( Exception $e) - { - } - return $tmp; - } - - public function testExpInDeepLevel(){ - echo $this->test_cumsum1(3); - echo $this->test_cumsum2(3); - echo $this->test_cumsum3(3); - echo $this->test_cumsum4(3); - } - - function testParseError() - { - $var = "test"; - $str = 'This is a $var!'; - eval("$str = \"$str\";"); - echo $str."\n"; - } - - function testTypeError(int $integer) - { - return $integer; - } - - function testArithmeticError() - { - $value = 1 << -1; - echo $value."\n"; - } - - function testDivisionByZeroError() - { - $value = 1 % 0; - return $value; - } - - function testAssertionError() - { - $value = 1; - assert($value === 0); - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/TestFinalClass.php b/testapps/PHP/application/common/TestFinalClass.php deleted file mode 100644 index 331129302..000000000 --- a/testapps/PHP/application/common/TestFinalClass.php +++ /dev/null @@ -1,13 +0,0 @@ - $limit){ - throw new LogicException("start cannot bigger that limit."); - } - usleep(120000); - for($i = $start; $i<=$limit; $i += $step){ - try{ - yield $i; - }catch (Exception $exception){ - return $exception->getMessage(); - } - } - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/TestGuzzle.php b/testapps/PHP/application/common/TestGuzzle.php deleted file mode 100644 index a7e878756..000000000 --- a/testapps/PHP/application/common/TestGuzzle.php +++ /dev/null @@ -1,51 +0,0 @@ -client = new Client([ - // Base URI is used with relative requests -// 'base_uri' => 'http://localhost:8088/', - 'base_uri' => 'https://example.com/', - // You can set any number of default request options. - 'timeout' => 9.0, - ]); - } - - public function gotoV() - { - $response = $this->client->request('GET', '/'); - return $response->getStatusCode(); - } - - public function gotofoo() - { - $response = $this->client->request('GET', '/dashboard'); - return $response->getStatusCode(); - } - - public function testAsync() - { - $promise = $this->client->requestAsync('GET', 'foo',['query'=>['foo'=>'bar']]); - $promise->then( - function (ResponseInterface $res) { - echo $res->getStatusCode() . "\n"; - }, - function (RequestException $e) { - echo $e->getMessage() . "\n"; - echo $e->getRequest()->getMethod(); - } - ); - } - - -} diff --git a/testapps/PHP/application/common/TestKafka.php b/testapps/PHP/application/common/TestKafka.php deleted file mode 100644 index 51f4e8797..000000000 --- a/testapps/PHP/application/common/TestKafka.php +++ /dev/null @@ -1,40 +0,0 @@ -set('log_level', (string) LOG_DEBUG); - $conf->set('debug', 'all'); - $rk = new RdKafka\Producer($conf); - $rk->addBrokers("dev-kafka:9092"); - $this->topic = $rk->newTopic("test-pinpoint"); - $this->rk = $rk; - } - - public function test() - { - $this->topic->produce(RD_KAFKA_PARTITION_UA ,RD_KAFKA_MSG_F_BLOCK ,"hello pinpoint"); - $this->topic->produce(RD_KAFKA_PARTITION_UA ,RD_KAFKA_MSG_F_BLOCK ,"hello pinpoint"); - $this->topic->produce(RD_KAFKA_PARTITION_UA ,RD_KAFKA_MSG_F_BLOCK ,"hello pinpoint"); - - var_dump($this->topic->getName()); - } - - public function __destruct() - { - $this->rk->flush(100); - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/TestMemcached.php b/testapps/PHP/application/common/TestMemcached.php deleted file mode 100644 index c2de7caf9..000000000 --- a/testapps/PHP/application/common/TestMemcached.php +++ /dev/null @@ -1,42 +0,0 @@ -mc = new Memcached(); - $this->mc->addServer("dev-memcached", "11211"); - } - - public function mem_add($key, $value){ - if($this->mc->add($key, $value)){ - return $this->mc->get($key); - }else{ - return false; - } - - } - - public function mem_get($key){ - $val = $this->mc->get($key); - return $val; - } - - public function mem_replace($key, $value){ - $val = $this->mc->get($key); - if($this->mc->replace($key, $value)){ - echo $this->mc->get($key); - return $val; - }else{ - return false; - } - } - - public function mem_del($key){ - $this->mc->delete($key); - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/TestMongo.php b/testapps/PHP/application/common/TestMongo.php deleted file mode 100644 index 067ed0bfa..000000000 --- a/testapps/PHP/application/common/TestMongo.php +++ /dev/null @@ -1,40 +0,0 @@ -mongoClient = new mClient($url); - } - - public function testAll() - { - $testdb = $this->mongoClient->testDB->moon; - $cursor = $testdb->find(['id'=>1]); - foreach ($cursor as $key) - { - var_dump($key); - } - - $ret = $testdb->insertOne([ - 'id'=>2, - 'age'=>1120, - 'height'=>1120 - ]); - - var_dump($ret->getInsertedId()); - - - $ret = $testdb->updateOne(['id'=>2],['$set'=>['height'=>120]]); - var_dump($ret->getMatchedCount()); - - - $ret = $testdb->deleteMany(['age'=>1120]); - var_dump($ret->getDeletedCount()); - } - -} \ No newline at end of file diff --git a/testapps/PHP/application/common/TestMysqli.php b/testapps/PHP/application/common/TestMysqli.php deleted file mode 100644 index bacfb70b6..000000000 --- a/testapps/PHP/application/common/TestMysqli.php +++ /dev/null @@ -1,49 +0,0 @@ -con = new mysqli($dsn, "root", "root", "pinpoint"); - - if (mysqli_connect_error()) { - echo mysqli_connect_error(); - } - } - - public function getData1() - { - $sql = 'show databases;'; - foreach ($this->con->query($sql) as $row) { - $ret[] = $row; - } - return $ret; - } - - public function getData2($a) - { - $sql = "select number,name,email from puser where user_id=?"; - - $stmt = $this->con->prepare($sql); - $id = 1; - $stmt->bind_param("i",$id); - $stmt->execute(); - $stmt->bind_result($number,$name,$email); - $stmt->fetch(); - return [$number,$name,$email]; - } - -} \ No newline at end of file diff --git a/testapps/PHP/application/common/TestRecursion.php b/testapps/PHP/application/common/TestRecursion.php deleted file mode 100644 index 95cd89bc0..000000000 --- a/testapps/PHP/application/common/TestRecursion.php +++ /dev/null @@ -1,30 +0,0 @@ -test_cumsum1($n - 1); - } - - public function test_cumsum2($n) - { - if ($n < 1) throw new \Exception("n < 1"); - $tmp = $n; -// try -// { - $tmp += $this->test_cumsum2($n-1); -// } -// catch( \Exception $e) -// { -// echo $e->getMessage(); -// } - return $tmp; - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/TestRedis.php b/testapps/PHP/application/common/TestRedis.php deleted file mode 100644 index 9e33d063c..000000000 --- a/testapps/PHP/application/common/TestRedis.php +++ /dev/null @@ -1,34 +0,0 @@ -rd = new Redis(); - $this->rd->connect('dev-redis', 6379); - echo $this->rd->ping(); - } - - public function getdata($key){ - return $this->rd->get($key); - } - - public function getkey(){ - return $this->rd->keys('*'); - } - - public function setdata($key, $value){ - $this->rd->set($key, $value); - } - - public function deldata($key){ - $this->rd->del($key); - } -} \ No newline at end of file diff --git a/testapps/PHP/application/common/TestReturn.php b/testapps/PHP/application/common/TestReturn.php deleted file mode 100644 index 380076197..000000000 --- a/testapps/PHP/application/common/TestReturn.php +++ /dev/null @@ -1,12 +0,0 @@ -getMessage()); - - pinpoint_mark_as_error($e->getMessage(), __FILE__); - return parent::render($e); - } - -} \ No newline at end of file diff --git a/testapps/PHP/application/config.php b/testapps/PHP/application/config.php deleted file mode 100644 index 08abb57d3..000000000 --- a/testapps/PHP/application/config.php +++ /dev/null @@ -1,243 +0,0 @@ - -// +---------------------------------------------------------------------- - -return [ - // +---------------------------------------------------------------------- - // | 应用设置 - // +---------------------------------------------------------------------- - - // 应用调试模式 - 'app_debug' => true, - // 应用Trace - 'app_trace' => false, - // 应用模式状态 - 'app_status' => '', - // 是否支持多模块 - 'app_multi_module' => true, - // 入口自动绑定模块 - 'auto_bind_module' => false, - // 注册的根命名空间 - 'root_namespace' => [], - // 扩展函数文件 - 'extra_file_list' => [THINK_PATH . 'helper' . EXT], - // 默认输出类型 - 'default_return_type' => 'html', - // 默认AJAX 数据返回格式,可选json xml ... - 'default_ajax_return' => 'json', - // 默认JSONP格式返回的处理方法 - 'default_jsonp_handler' => 'jsonpReturn', - // 默认JSONP处理方法 - 'var_jsonp_handler' => 'callback', - // 默认时区 - 'default_timezone' => 'PRC', - // 是否开启多语言 - 'lang_switch_on' => false, - // 默认全局过滤方法 用逗号分隔多个 - 'default_filter' => '', - // 默认语言 - 'default_lang' => 'zh-cn', - // 应用类库后缀 - 'class_suffix' => false, - // 控制器类后缀 - 'controller_suffix' => false, - - // +---------------------------------------------------------------------- - // | 模块设置 - // +---------------------------------------------------------------------- - - // 默认模块名 - 'default_module' => 'index', - // 禁止访问模块 - 'deny_module_list' => ['common'], - // 默认控制器名 - 'default_controller' => 'Index', - // 默认操作名 - 'default_action' => 'index', - // 默认验证器 - 'default_validate' => '', - // 默认的空控制器名 - 'empty_controller' => 'Error', - // 操作方法后缀 - 'action_suffix' => '', - // 自动搜索控制器 - 'controller_auto_search' => false, - - // +---------------------------------------------------------------------- - // | URL设置 - // +---------------------------------------------------------------------- - - // PATHINFO变量名 用于兼容模式 - 'var_pathinfo' => 's', - // 兼容PATH_INFO获取 - 'pathinfo_fetch' => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'], - // pathinfo分隔符 - 'pathinfo_depr' => '/', - // URL伪静态后缀 - 'url_html_suffix' => 'html', - // URL普通方式参数 用于自动生成 - 'url_common_param' => false, - // URL参数方式 0 按名称成对解析 1 按顺序解析 - 'url_param_type' => 0, - // 是否开启路由 - 'url_route_on' => true, - // 路由使用完整匹配 - 'route_complete_match' => false, - // 路由配置文件(支持配置多个) - 'route_config_file' => ['route'], - // 是否开启路由解析缓存 - 'route_check_cache' => false, - // 是否强制使用路由 - 'url_route_must' => false, - // 域名部署 - 'url_domain_deploy' => false, - // 域名根,如thinkphp.cn - 'url_domain_root' => '', - // 是否自动转换URL中的控制器和操作名 - 'url_convert' => false, - // 默认的访问控制器层 - 'url_controller_layer' => 'controller', - // 表单请求类型伪装变量 - 'var_method' => '_method', - // 表单ajax伪装变量 - 'var_ajax' => '_ajax', - // 表单pjax伪装变量 - 'var_pjax' => '_pjax', - // 是否开启请求缓存 true自动缓存 支持设置请求缓存规则 - 'request_cache' => false, - // 请求缓存有效期 - 'request_cache_expire' => null, - // 全局请求缓存排除规则 - 'request_cache_except' => [], - - // +---------------------------------------------------------------------- - // | 模板设置 - // +---------------------------------------------------------------------- - - 'template' => [ - // 模板引擎类型 支持 php think 支持扩展 - 'type' => 'Think', - // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 - 'auto_rule' => 1, - // 模板路径 - 'view_path' => '', - // 模板后缀 - 'view_suffix' => 'html', - // 模板文件名分隔符 - 'view_depr' => DS, - // 模板引擎普通标签开始标记 - 'tpl_begin' => '{', - // 模板引擎普通标签结束标记 - 'tpl_end' => '}', - // 标签库标签开始标记 - 'taglib_begin' => '{', - // 标签库标签结束标记 - 'taglib_end' => '}', - ], - - // 视图输出字符串内容替换 - 'view_replace_str' => [], - // 默认跳转页面对应的模板文件 - 'dispatch_success_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl', - 'dispatch_error_tmpl' => THINK_PATH . 'tpl' . DS . 'dispatch_jump.tpl', - - // +---------------------------------------------------------------------- - // | 异常及错误设置 - // +---------------------------------------------------------------------- - - // 异常页面的模板文件 - 'exception_tmpl' => THINK_PATH . 'tpl' . DS . 'think_exception.tpl', - - // 错误显示信息,非调试模式有效 - 'error_message' => '页面错误!请稍后再试~', - // 显示错误信息 - 'show_error_msg' => false, - // 异常处理handle类 留空使用 \think\exception\Handle - 'exception_handle' => '\\app\\common\\exception\\ExceptionHandler', - - // +---------------------------------------------------------------------- - // | 日志设置 - // +---------------------------------------------------------------------- - - 'log' => [ - // 日志记录方式,内置 file socket 支持扩展 - 'type' => 'File', - // 日志保存目录 - 'path' => LOG_PATH, - // 日志记录级别 - 'level' => [], - ], - - // +---------------------------------------------------------------------- - // | Trace设置 开启 app_trace 后 有效 - // +---------------------------------------------------------------------- - 'trace' => [ - // 内置Html Console 支持扩展 - 'type' => 'Html', - ], - - // +---------------------------------------------------------------------- - // | 缓存设置 - // +---------------------------------------------------------------------- - - 'cache' => [ - // 驱动方式 - 'type' => 'File', - // 缓存保存目录 - 'path' => CACHE_PATH, - // 缓存前缀 - 'prefix' => '', - // 缓存有效期 0表示永久缓存 - 'expire' => 0, - ], - - // +---------------------------------------------------------------------- - // | 会话设置 - // +---------------------------------------------------------------------- - - 'session' => [ - 'id' => '', - // SESSION_ID的提交变量,解决flash上传跨域 - 'var_session_id' => '', - // SESSION 前缀 - 'prefix' => 'think', - // 驱动方式 支持redis memcache memcached - 'type' => '', - // 是否自动开启 SESSION - 'auto_start' => true, - ], - - // +---------------------------------------------------------------------- - // | Cookie设置 - // +---------------------------------------------------------------------- - 'cookie' => [ - // cookie 名称前缀 - 'prefix' => '', - // cookie 保存时间 - 'expire' => 0, - // cookie 保存路径 - 'path' => '/', - // cookie 有效域名 - 'domain' => '', - // cookie 启用安全传输 - 'secure' => false, - // httponly设置 - 'httponly' => '', - // 是否使用 setcookie - 'setcookie' => true, - ], - - //分页配置 - 'paginate' => [ - 'type' => 'bootstrap', - 'var_page' => 'page', - 'list_rows' => 15, - ], -]; diff --git a/testapps/PHP/application/database.php b/testapps/PHP/application/database.php deleted file mode 100644 index 28f724e3d..000000000 --- a/testapps/PHP/application/database.php +++ /dev/null @@ -1,55 +0,0 @@ - -// +---------------------------------------------------------------------- - -return [ - // 数据库类型 - 'type' => 'mysql', - // 服务器地址 - 'hostname' => 'dev-mysql', - // 数据库名 - 'database' => 'DBTest', - // 用户名 - 'username' => 'root', - // 密码 - 'password' => '123456', - // 端口 - 'hostport' => '3306', - // 连接dsn - 'dsn' => '', - // 数据库连接参数 - 'params' => [], - // 数据库编码默认采用utf8 - 'charset' => 'utf8', - // 数据库表前缀 - 'prefix' => '', - // 数据库调试模式 - 'debug' => true, - // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) - 'deploy' => 0, - // 数据库读写是否分离 主从式有效 - 'rw_separate' => false, - // 读写分离后 主服务器数量 - 'master_num' => 1, - // 指定从服务器序号 - 'slave_no' => '', - // 自动读取主库数据 - 'read_master' => false, - // 是否严格检查字段是否存在 - 'fields_strict' => true, - // 数据集返回类型 - 'resultset_type' => 'array', - // 自动写入时间戳字段 - 'auto_timestamp' => false, - // 时间字段取出后的默认时间格式 - 'datetime_format' => 'Y-m-d H:i:s', - // 是否需要进行SQL性能分析 - 'sql_explain' => false, -]; diff --git a/testapps/PHP/application/index/controller/Args.php b/testapps/PHP/application/index/controller/Args.php deleted file mode 100644 index 646e9765d..000000000 --- a/testapps/PHP/application/index/controller/Args.php +++ /dev/null @@ -1,35 +0,0 @@ -x_ = $x; - } -}; - -class SObjectString -{ - var $x_; - - public function __construct($x) - { - $this->x_ = $x; - } - - public function __toString() - { - return $this->x_; - } - -}; diff --git a/testapps/PHP/application/index/controller/Index.php b/testapps/PHP/application/index/controller/Index.php deleted file mode 100644 index 8fba1deef..000000000 --- a/testapps/PHP/application/index/controller/Index.php +++ /dev/null @@ -1,264 +0,0 @@ -fetch("index"); - } - - public function get_date() - { - return AppDate::outputDate(); - } - - public function test_func1() - { - $instance = new AopFunction(); - return $instance->test_func1("one", 3); - } - - public function test_func2_caller() - { - $instance = new AopFunction(); - return $instance->test_func2(); - } - - public function test_inherit_func() - { - $instance = new Student(); - $r1 = $instance->eat(); - $instance = new Teacher(); - $r2 = $instance->eat(); - $instance = new Doctor(); - $r3 = $instance->eat(); - return $r1.$r2.$r3.$instance->other(); - - } - - public function test_generator_func() - { - $instance = new TestGenerator(); - $sum = 0; - foreach ($instance->generator(1, 10, 2) as $number){$sum += $number;} - return $sum; - } - - public function test_abstract_func() - { - $instance = new AbstractStudent("Evy"); - $r1 = $instance->eat(); - $r2 = $instance->drink(); - return $r1.$r2.$instance->breath(); - } - - public function test_interface_func() - { - $instance = new InterfaceStudent(); - $instance->setVariable("Evy", "Hua"); - $instance->setVariable("Sam", "Wei"); - $r1 = $instance->getHtml("Hello {Evy}"); - return $r1.$instance->other("Evy"); - } - - public function test_clone() - { - $instance1 = new TestClone(); - $instance2 = clone $instance1; - $instance2->setColor("green"); - $r1 = $instance2->getColor(); - $instance1->setColor("red"); - return $r1.$instance1->getColor(); - } - - public function test_recursion() - { - $instance = new TestRecursion(); - $r1 = $instance->test_cumsum1(3); -// return $instance->test_cumsum2(3); - return $r1; - } - - public function test_anonymous() - { - $instance = new TestAnonymous(); - $bell = $instance->createbell(date("Y/m/d")); - return $bell(); - } - - public function test_static() - { - return TestStatic::static_func(123); - } - - public function test_final_class() - { - $instance = new TestFinalClass(); - return $instance->test(); -// class swtest1 extends TestFinalClass{}; - } - - public function test_final_func() - { - $instance = new TestFinalFunc(); - return $instance->test("abc"); -// class swtest2 extends app\TestFinalFunc -// { -// public final function test(){ -// echo "123"; -// } -// } - } - - public function test_trait() - { - $instance = new TestTrait(); - $r1 = $instance->traitfunc("Evy"); - return $r1.$instance->test(); - } - - public function test_callback() - { - $className = "app\common\CallBackFunc"; - $funcName = "fnCallback1"; - $instance = new CallBackFunc(); - $r1 = call_user_func_array(array($className, $funcName), array("hello", "world")); - $r2 = call_user_func_array(array($instance,"fnCallback2"), array("hello", "world")); - return $r1.$r2; - } - - public function test_level() - { - $instance = new LevelClass(); - $r1 = $instance->public_function(123); - $instance = new ExtendLevel(); - $r2 = $instance->public_function(123); - $instance = new OverRideLevel(); - return $instance->public_function(123); - } - - public function test_args() - { - $myfile = fopen(__DIR__.'/Args.php', "r"); - $instance = new TestArgs(); - return $instance->test_args(null, 123, 3.1415, true, array(1, 2), new SObject(1), new SObjectString("ObjToString"), "abcd", $myfile, constant("GREETING")); - } - - public function test_return() - { - $myfile = fopen(__DIR__.'/Args.php', "r"); - $instance = new TestReturn(); - $args = array(null, 123, 3.1415, true, array(1, 2), new SObject(1), new SObjectString("ObjToString"), "abcd", $myfile, constant("GREETING")); - $return_array = []; - foreach($args as $value){ - array_push($return_array,$instance->test_return($value)); - } - return count($return_array); - } - - public function test_curl() - { - $acr = new AccessRemote(); - $acr->gotoUrl($_GET['remote']); - return "Call ".$_GET['remote']; - } - - public function test_guzzle() - { - $guzzle = new TestGuzzle(); - $tmp = $guzzle->gotoV(); -// return $guzzle->gotofoo(); - return $tmp."call remote"; - } - - public function test_pdo() - { - // $user = new User; - // $user->data(['name'=>'thinkphp','age'=>10, 'city'=>'thinkphp']); - // $user->save(); - $user = new User; - $user->name = 'thinkphp'; - $user->city = 'test'; - $user->save(); - $user1 = User::get(['name'=>'thinkphp']); - $user2 = User::get(function($query){ - $query->where('name', 'thinkphp'); - }); - return $user1; - } - - public function test_redis() - { - Cache::set('name', 'value'); - return Cache::get('name'); - } - - public function test_mongo() - { - return User::get(1); - } - ###############################Test Exception################### - public function test_call_undefined_function() - { - $error = new TestError(); - // try { - $error->error(); - // $error->testParseError(); - // $error->testTypeError("abc"); - // $error->testArithmeticError(); - // $error->testDivisionByZeroError(); - // $error->testAssertionError(); - // }catch (Exception $ex){ - // echo "Catch exception $ex"; - // } - } - - public function test_uncaught_exception() - { - return TestError::throwException(); - } - - public function test_caught_exception() - { - TestError::caughtException(); - } - - public function test_exception_recursion() - { - TestError::test_cumsum_e1(3); - } -} - diff --git a/testapps/PHP/application/index/model/User.php b/testapps/PHP/application/index/model/User.php deleted file mode 100644 index 4175871be..000000000 --- a/testapps/PHP/application/index/model/User.php +++ /dev/null @@ -1,12 +0,0 @@ - - - - - pinpoint-php demo - - - - -

Simple server

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Link
- Call internal function "date". -
- Call user-defined function. -
- Call user-defined function in a namespace. -
- Call inherit function. -
- Call generator. -
- Call abstract function. -
- Call interface function. -
- Call Clone. -
- Call Recursion. -
- Call function in Anonymous. -
- Call Static function. -
- Call function in final class. -
- Call final function. -
- Call function in trait. -
- Callback function. -
- Call function with different access. -
- Call function with args. -
- Call function return datas. -
- Test Guzzle. -
- Test PDO. -
- Test Redis. -
-
- -

Error and exception

- -
- - - - - - - - - - - - - - - - - - - -
Link
- Call undefined function. -
- Call uncaught exception. -
- Call caught exception. -
- Call exception in recursion. -
-
- -

Test curl

-
- remote url: - -
- - - -

Test mysqli

-
- -
- -

Test memcached

-
- -
- -

Test kafka

-
- -
- -

Test Guzzle

-
- -
- - - - diff --git a/testapps/PHP/application/provider.php b/testapps/PHP/application/provider.php deleted file mode 100644 index b07c54ded..000000000 --- a/testapps/PHP/application/provider.php +++ /dev/null @@ -1,14 +0,0 @@ - -// +---------------------------------------------------------------------- - -// 应用容器绑定定义 -return [ -]; diff --git a/testapps/PHP/application/route.php b/testapps/PHP/application/route.php deleted file mode 100644 index 8861b451f..000000000 --- a/testapps/PHP/application/route.php +++ /dev/null @@ -1,46 +0,0 @@ - -// +---------------------------------------------------------------------- - -return [ - '/get_date' => 'index.php/index/Index/get_date', - '/test_func1' => 'index.php/index/Index/test_func1', - '/test_func2_caller' => 'index.php/index/Index/test_func2_caller', - '/test_inherit_func' => 'index.php/index/Index/test_inherit_func', - '/test_generator_func' => 'index.php/index/Index/test_generator_func', - '/test_abstract_func' => 'index.php/index/Index/test_abstract_func', - '/test_interface_func' => 'index.php/index/Index/test_interface_func', - '/test_clone' => 'index.php/index/Index/test_clone', - '/test_recursion' => 'index.php/index/Index/test_recursion', - '/test_anonymous' => 'index.php/index/Index/test_anonymous', - '/test_static' => 'index.php/index/Index/test_static', - '/test_final_class' => 'index.php/index/Index/test_final_class', - '/test_final_func' => 'index.php/index/Index/test_final_func', - '/test_trait' => 'index.php/index/Index/test_trait', - '/test_callback' => 'index.php/index/Index/test_callback', - '/test_level' => 'index.php/index/Index/test_level', - '/test_args' => 'index.php/index/Index/test_args', - '/test_return' => 'index.php/index/Index/test_return', -//// Test Exception - '/test_call_undefined_function' => 'index.php/index/Index/test_call_undefined_function', - '/test_uncaught_exception' => 'index.php/index/Index/test_uncaught_exception', - '/test_caught_exception' => 'index.php/index/Index/test_caught_exception', - '/test_exception_recursion' => 'index.php/index/Index/test_exception_recursion', -///////////////curl - '/test_curl' => 'index.php/index/Index/test_curl', -//////////////PDO - '/test_pdo' => 'index.php/index/Index/test_pdo', -//////////////Redis - '/test_redis' => 'index.php/index/Index/test_redis', -///////////////guzzle - '/test_guzzle' => 'index.php/index/Index/test_guzzle', -///////////////mongo - '/test_mongo' => 'index.php/index/Index/test_mongo', -]; diff --git a/testapps/PHP/application/tags.php b/testapps/PHP/application/tags.php deleted file mode 100644 index 4b18d1050..000000000 --- a/testapps/PHP/application/tags.php +++ /dev/null @@ -1,28 +0,0 @@ - -// +---------------------------------------------------------------------- - -// 应用行为扩展定义文件 -return [ - // 应用初始化 - 'app_init' => [], - // 应用开始 - 'app_begin' => [], - // 模块初始化 - 'module_init' => [], - // 操作开始执行 - 'action_begin' => [], - // 视图内容过滤 - 'view_filter' => [], - // 日志写入 - 'log_write' => [], - // 应用结束 - 'app_end' => [], -]; diff --git a/testapps/PHP/application/util/Foo.php b/testapps/PHP/application/util/Foo.php deleted file mode 100644 index a6561d7c5..000000000 --- a/testapps/PHP/application/util/Foo.php +++ /dev/null @@ -1,10 +0,0 @@ - -// +---------------------------------------------------------------------- - -return [ - // 生成应用公共文件 - '__file__' => ['common.php', 'config.php', 'database.php'], - - // 定义demo模块的自动生成 (按照实际定义的文件名生成) - 'demo' => [ - '__file__' => ['common.php'], - '__dir__' => ['behavior', 'controller', 'model', 'view'], - 'controller' => ['Index', 'Test', 'UserType'], - 'model' => ['User', 'UserType'], - 'view' => ['index/index'], - ], - // 其他更多的模块定义 -]; diff --git a/testapps/PHP/composer.json b/testapps/PHP/composer.json deleted file mode 100644 index 1ebe8a7ee..000000000 --- a/testapps/PHP/composer.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "name": "topthink/think", - "description": "the new thinkphp framework", - "type": "project", - "keywords": [ - "framework", - "thinkphp", - "ORM" - ], - "homepage": "http://thinkphp.cn/", - "license": "Apache-2.0", - "authors": [ - { - "name": "liu21st", - "email": "liu21st@gmail.com" - } - ], - "require": { - "php": ">=5.6.0", - "topthink/framework": "5.1.*", - "pinpoint-apm/pinpoint-php-aop": "dev-master", - "predis/predis": "^1.1", - "topthink/think-testing": "2.0.*", - "guzzlehttp/guzzle": "^6.0" - }, - "autoload": { - "psr-4": { - "app\\": "application", - "Plugins\\": "Plugins" - } - }, - "extra": { - "think-path": "thinkphp" - }, - "config": { - "preferred-install": "dist", - "allow-plugins": { - "topthink/think-installer": true - } - } -} diff --git a/testapps/PHP/config/app.php b/testapps/PHP/config/app.php deleted file mode 100644 index e701a88be..000000000 --- a/testapps/PHP/config/app.php +++ /dev/null @@ -1,146 +0,0 @@ - -// +---------------------------------------------------------------------- - -// +---------------------------------------------------------------------- -// | 应用设置 -// +---------------------------------------------------------------------- - -return [ - // 应用名称 - 'app_name' => '', - // 应用地址 - 'app_host' => '', - // 应用调试模式 - 'app_debug' => true, - // 应用Trace - 'app_trace' => false, - // 是否支持多模块 - 'app_multi_module' => true, - // 入口自动绑定模块 - 'auto_bind_module' => false, - // 注册的根命名空间 - 'root_namespace' => [], - // 默认输出类型 - 'default_return_type' => 'html', - // 默认AJAX 数据返回格式,可选json xml ... - 'default_ajax_return' => 'json', - // 默认JSONP格式返回的处理方法 - 'default_jsonp_handler' => 'jsonpReturn', - // 默认JSONP处理方法 - 'var_jsonp_handler' => 'callback', - // 默认时区 - 'default_timezone' => 'Asia/Shanghai', - // 是否开启多语言 - 'lang_switch_on' => false, - // 默认全局过滤方法 用逗号分隔多个 - 'default_filter' => '', - // 默认语言 - 'default_lang' => 'zh-cn', - // 应用类库后缀 - 'class_suffix' => false, - // 控制器类后缀 - 'controller_suffix' => false, - - // +---------------------------------------------------------------------- - // | 模块设置 - // +---------------------------------------------------------------------- - - // 默认模块名 - 'default_module' => 'index', - // 禁止访问模块 - 'deny_module_list' => ['common'], - // 默认控制器名 - 'default_controller' => 'Index', - // 默认操作名 - 'default_action' => 'index', - // 默认验证器 - 'default_validate' => '', - // 默认的空模块名 - 'empty_module' => '', - // 默认的空控制器名 - 'empty_controller' => 'Error', - // 操作方法前缀 - 'use_action_prefix' => false, - // 操作方法后缀 - 'action_suffix' => '', - // 自动搜索控制器 - 'controller_auto_search' => false, - - // +---------------------------------------------------------------------- - // | URL设置 - // +---------------------------------------------------------------------- - - // PATHINFO变量名 用于兼容模式 - 'var_pathinfo' => 's', - // 兼容PATH_INFO获取 - 'pathinfo_fetch' => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL'], - // pathinfo分隔符 - 'pathinfo_depr' => '/', - // HTTPS代理标识 - 'https_agent_name' => '', - // IP代理获取标识 - 'http_agent_ip' => 'X-REAL-IP', - // URL伪静态后缀 - 'url_html_suffix' => 'html', - // URL普通方式参数 用于自动生成 - 'url_common_param' => false, - // URL参数方式 0 按名称成对解析 1 按顺序解析 - 'url_param_type' => 0, - // 是否开启路由延迟解析 - 'url_lazy_route' => false, - // 是否强制使用路由 - 'url_route_must' => false, - // 合并路由规则 - 'route_rule_merge' => false, - // 路由是否完全匹配 - 'route_complete_match' => false, - // 使用注解路由 - 'route_annotation' => false, - // 域名根,如thinkphp.cn - 'url_domain_root' => '', - // 是否自动转换URL中的控制器和操作名 - 'url_convert' => true, - // 默认的访问控制器层 - 'url_controller_layer' => 'controller', - // 表单请求类型伪装变量 - 'var_method' => '_method', - // 表单ajax伪装变量 - 'var_ajax' => '_ajax', - // 表单pjax伪装变量 - 'var_pjax' => '_pjax', - // 是否开启请求缓存 true自动缓存 支持设置请求缓存规则 - 'request_cache' => false, - // 请求缓存有效期 - 'request_cache_expire' => null, - // 全局请求缓存排除规则 - 'request_cache_except' => [], - // 是否开启路由缓存 - 'route_check_cache' => false, - // 路由缓存的Key自定义设置(闭包),默认为当前URL和请求类型的md5 - 'route_check_cache_key' => '', - // 路由缓存类型及参数 - 'route_cache_option' => [], - - // 默认跳转页面对应的模板文件 - 'dispatch_success_tmpl' => Env::get('think_path') . 'tpl/dispatch_jump.tpl', - 'dispatch_error_tmpl' => Env::get('think_path') . 'tpl/dispatch_jump.tpl', - - // 异常页面的模板文件 - 'exception_tmpl' => Env::get('think_path') . 'tpl/think_exception.tpl', - - // 错误显示信息,非调试模式有效 - 'error_message' => '页面错误!请稍后再试~', - // 显示错误信息 - 'show_error_msg' => false, - // 异常处理handle类 留空使用 \think\exception\Handle - 'exception_handle' => 'app\common\exception\ExceptionHandler', - -]; diff --git a/testapps/PHP/config/cache.php b/testapps/PHP/config/cache.php deleted file mode 100644 index 69fa05255..000000000 --- a/testapps/PHP/config/cache.php +++ /dev/null @@ -1,20 +0,0 @@ - -// +---------------------------------------------------------------------- - -// +---------------------------------------------------------------------- -// | 缓存设置 -// +---------------------------------------------------------------------- - -return [ - // 驱动方式 - 'type' => 'redis', - 'host' => 'localhost' -]; diff --git a/testapps/PHP/config/console.php b/testapps/PHP/config/console.php deleted file mode 100644 index 40cd34611..000000000 --- a/testapps/PHP/config/console.php +++ /dev/null @@ -1,20 +0,0 @@ - -// +---------------------------------------------------------------------- - -// +---------------------------------------------------------------------- -// | 控制台配置 -// +---------------------------------------------------------------------- -return [ - 'name' => 'Think Console', - 'version' => '0.1', - 'user' => null, - 'auto_path' => env('app_path') . 'command' . DIRECTORY_SEPARATOR, -]; diff --git a/testapps/PHP/config/cookie.php b/testapps/PHP/config/cookie.php deleted file mode 100644 index 81802b968..000000000 --- a/testapps/PHP/config/cookie.php +++ /dev/null @@ -1,30 +0,0 @@ - -// +---------------------------------------------------------------------- - -// +---------------------------------------------------------------------- -// | Cookie设置 -// +---------------------------------------------------------------------- -return [ - // cookie 名称前缀 - 'prefix' => '', - // cookie 保存时间 - 'expire' => 0, - // cookie 保存路径 - 'path' => '/', - // cookie 有效域名 - 'domain' => '', - // cookie 启用安全传输 - 'secure' => false, - // httponly设置 - 'httponly' => '', - // 是否使用 setcookie - 'setcookie' => true, -]; diff --git a/testapps/PHP/config/database.php b/testapps/PHP/config/database.php deleted file mode 100644 index 120243a2b..000000000 --- a/testapps/PHP/config/database.php +++ /dev/null @@ -1,63 +0,0 @@ - -// +---------------------------------------------------------------------- - -return [ - // 数据库类型 - 'type' => 'mysql', - // 服务器地址 - 'hostname' => 'localhost', - // 数据库名 - 'database' => 'DBTest', - // 用户名 - 'username' => 'test', - // 密码 - 'password' => '123456', - // 端口 - 'hostport' => '3306', - // 连接dsn - 'dsn' => '', - // 数据库连接参数 - 'params' => [], - // 数据库编码默认采用utf8 - 'charset' => 'utf8', - // 数据库表前缀 - 'prefix' => '', - // 数据库调试模式 - 'debug' => true, - // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) - 'deploy' => 0, - // 数据库读写是否分离 主从式有效 - 'rw_separate' => false, - // 读写分离后 主服务器数量 - 'master_num' => 1, - // 指定从服务器序号 - 'slave_no' => '', - // 自动读取主库数据 - 'read_master' => false, - // 是否严格检查字段是否存在 - 'fields_strict' => true, - // 数据集返回类型 - 'resultset_type' => 'array', - // 自动写入时间戳字段 - 'auto_timestamp' => false, - // 时间字段取出后的默认时间格式 - 'datetime_format' => 'Y-m-d H:i:s', - // 是否需要进行SQL性能分析 - 'sql_explain' => false, - // Builder类 - 'builder' => '', - // Query类 - 'query' => '\\think\\db\\Query', - // 是否需要断线重连 - 'break_reconnect' => false, - // 断线标识字符串 - 'break_match_str' => [], -]; diff --git a/testapps/PHP/config/log.php b/testapps/PHP/config/log.php deleted file mode 100644 index f735d7456..000000000 --- a/testapps/PHP/config/log.php +++ /dev/null @@ -1,30 +0,0 @@ - -// +---------------------------------------------------------------------- - -// +---------------------------------------------------------------------- -// | 日志设置 -// +---------------------------------------------------------------------- -return [ - // 日志记录方式,内置 file socket 支持扩展 - 'type' => 'File', - // 日志保存目录 - 'path' => '', - // 日志记录级别 - 'level' => [], - // 单文件日志写入 - 'single' => false, - // 独立日志级别 - 'apart_level' => [], - // 最大日志文件数量 - 'max_files' => 0, - // 是否关闭日志写入 - 'close' => false, -]; diff --git a/testapps/PHP/config/middleware.php b/testapps/PHP/config/middleware.php deleted file mode 100644 index 294228a54..000000000 --- a/testapps/PHP/config/middleware.php +++ /dev/null @@ -1,18 +0,0 @@ - -// +---------------------------------------------------------------------- - -// +---------------------------------------------------------------------- -// | 中间件配置 -// +---------------------------------------------------------------------- -return [ - // 默认中间件命名空间 - 'default_namespace' => 'app\\http\\middleware\\', -]; diff --git a/testapps/PHP/config/session.php b/testapps/PHP/config/session.php deleted file mode 100644 index 79a325c1b..000000000 --- a/testapps/PHP/config/session.php +++ /dev/null @@ -1,26 +0,0 @@ - -// +---------------------------------------------------------------------- - -// +---------------------------------------------------------------------- -// | 会话设置 -// +---------------------------------------------------------------------- - -return [ - 'id' => '', - // SESSION_ID的提交变量,解决flash上传跨域 - 'var_session_id' => '', - // SESSION 前缀 - 'prefix' => 'think', - // 驱动方式 支持redis memcache memcached - 'type' => '', - // 是否自动开启 SESSION - 'auto_start' => true, -]; diff --git a/testapps/PHP/config/template.php b/testapps/PHP/config/template.php deleted file mode 100644 index 87ba8f72f..000000000 --- a/testapps/PHP/config/template.php +++ /dev/null @@ -1,35 +0,0 @@ - -// +---------------------------------------------------------------------- - -// +---------------------------------------------------------------------- -// | 模板设置 -// +---------------------------------------------------------------------- - -return [ - // 模板引擎类型 支持 php think 支持扩展 - 'type' => 'Think', - // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法 - 'auto_rule' => 1, - // 模板路径 - 'view_path' => '', - // 模板后缀 - 'view_suffix' => 'html', - // 模板文件名分隔符 - 'view_depr' => DIRECTORY_SEPARATOR, - // 模板引擎普通标签开始标记 - 'tpl_begin' => '{', - // 模板引擎普通标签结束标记 - 'tpl_end' => '}', - // 标签库标签开始标记 - 'taglib_begin' => '{', - // 标签库标签结束标记 - 'taglib_end' => '}', -]; diff --git a/testapps/PHP/config/trace.php b/testapps/PHP/config/trace.php deleted file mode 100644 index 568054e75..000000000 --- a/testapps/PHP/config/trace.php +++ /dev/null @@ -1,18 +0,0 @@ - -// +---------------------------------------------------------------------- - -// +---------------------------------------------------------------------- -// | Trace设置 开启 app_trace 后 有效 -// +---------------------------------------------------------------------- -return [ - // 内置Html Console 支持扩展 - 'type' => 'Html', -]; diff --git a/testapps/PHP/extend/.gitignore b/testapps/PHP/extend/.gitignore deleted file mode 100644 index c96a04f00..000000000 --- a/testapps/PHP/extend/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore \ No newline at end of file diff --git a/testapps/PHP/index.php b/testapps/PHP/index.php new file mode 100644 index 000000000..42b820706 --- /dev/null +++ b/testapps/PHP/index.php @@ -0,0 +1,21 @@ +run(); diff --git a/testapps/PHP/php.ini b/testapps/PHP/php.ini new file mode 100644 index 000000000..aed0ed1f9 --- /dev/null +++ b/testapps/PHP/php.ini @@ -0,0 +1,10 @@ +[pinpoint_php] +extension=pinpoint_php +pinpoint_php.CollectorHost=tcp:dev-collector:10000 +pinpoint_php.SendSpanTimeOutMs=0 +pinpoint_php.DebugReport=true + +[error_log] +error_reporting = E_ALL | E_STRICT +log_errors= On +error_log=/tmp/php-error.log \ No newline at end of file diff --git a/testapps/PHP/phpunit.xml b/testapps/PHP/phpunit.xml deleted file mode 100644 index 5a41bcf74..000000000 --- a/testapps/PHP/phpunit.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - ./tests/ - - - - - application/ - - - diff --git a/testapps/PHP/public/.htaccess b/testapps/PHP/public/.htaccess deleted file mode 100644 index cbc786893..000000000 --- a/testapps/PHP/public/.htaccess +++ /dev/null @@ -1,8 +0,0 @@ - - Options +FollowSymlinks -Multiviews - RewriteEngine On - - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] - diff --git a/testapps/PHP/public/favicon.ico b/testapps/PHP/public/favicon.ico deleted file mode 100644 index e71815a66..000000000 Binary files a/testapps/PHP/public/favicon.ico and /dev/null differ diff --git a/testapps/PHP/public/index.php b/testapps/PHP/public/index.php deleted file mode 100644 index 98a199d96..000000000 --- a/testapps/PHP/public/index.php +++ /dev/null @@ -1,30 +0,0 @@ - -// +---------------------------------------------------------------------- - -// [ 应用入口文件 ] -namespace think; - -// 加载基础文件 -require __DIR__ . '/../thinkphp/base.php'; - -//################################################################### -define('AOP_CACHE_DIR', __DIR__ . '/../Cache/'); -define('PLUGINS_DIR', __DIR__ . '/../Plugins/'); -define('APPLICATION_NAME','thinkphp5.1'); // your application name -define('APPLICATION_ID','thinkphp5.1'); // your application id -define('PINPOINT_USE_CACHE','YES'); -require_once __DIR__ . '/../vendor/pinpoint-apm/pinpoint-php-aop/auto_pinpointed.php'; -//################################################################### - -// 支持事先使用静态方法设置Request对象和Config对象 - -// 执行应用并响应 -Container::get('app')->run()->send(); diff --git a/testapps/PHP/public/robots.txt b/testapps/PHP/public/robots.txt deleted file mode 100644 index eb0536286..000000000 --- a/testapps/PHP/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/testapps/PHP/public/router.php b/testapps/PHP/public/router.php deleted file mode 100644 index 4f916b407..000000000 --- a/testapps/PHP/public/router.php +++ /dev/null @@ -1,17 +0,0 @@ - -// +---------------------------------------------------------------------- -// $Id$ - -if (is_file($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SCRIPT_NAME"])) { - return false; -} else { - require __DIR__ . "/index.php"; -} diff --git a/testapps/PHP/public/static/.gitignore b/testapps/PHP/public/static/.gitignore deleted file mode 100644 index c96a04f00..000000000 --- a/testapps/PHP/public/static/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore \ No newline at end of file diff --git a/testapps/PHP/route/route.php b/testapps/PHP/route/route.php deleted file mode 100644 index 23e3e6106..000000000 --- a/testapps/PHP/route/route.php +++ /dev/null @@ -1,52 +0,0 @@ - -// +---------------------------------------------------------------------- - -// Route::get('think', function () { -// return 'hello,ThinkPHP5!'; -// }); - -// Route::get('hello/:name', 'index/hello'); - -return [ - '/get_date' => 'index.php/index/Index/get_date', - '/test_func1' => 'index.php/index/Index/test_func1', - '/test_func2_caller' => 'index.php/index/Index/test_func2_caller', - '/test_inherit_func' => 'index.php/index/Index/test_inherit_func', - '/test_generator_func' => 'index.php/index/Index/test_generator_func', - '/test_abstract_func' => 'index.php/index/Index/test_abstract_func', - '/test_interface_func' => 'index.php/index/Index/test_interface_func', - '/test_clone' => 'index.php/index/Index/test_clone', - '/test_recursion' => 'index.php/index/Index/test_recursion', - '/test_anonymous' => 'index.php/index/Index/test_anonymous', - '/test_static' => 'index.php/index/Index/test_static', - '/test_final_class' => 'index.php/index/Index/test_final_class', - '/test_final_func' => 'index.php/index/Index/test_final_func', - '/test_trait' => 'index.php/index/Index/test_trait', - '/test_callback' => 'index.php/index/Index/test_callback', - '/test_level' => 'index.php/index/Index/test_level', - '/test_args' => 'index.php/index/Index/test_args', - '/test_return' => 'index.php/index/Index/test_return', -//// Test Exception - '/test_call_undefined_function' => 'index.php/index/Index/test_call_undefined_function', - '/test_uncaught_exception' => 'index.php/index/Index/test_uncaught_exception', - '/test_caught_exception' => 'index.php/index/Index/test_caught_exception', - '/test_exception_recursion' => 'index.php/index/Index/test_exception_recursion', -///////////////curl - '/test_curl' => 'index.php/index/Index/test_curl', -//////////////PDO - '/test_pdo' => 'index.php/index/Index/test_pdo', -//////////////Redis - '/test_redis' => 'index.php/index/Index/test_redis', -///////////////guzzle - '/test_guzzle' => 'index.php/index/Index/test_guzzle', -///////////////mongo - '/test_mongo' => 'index.php/index/Index/test_mongo', -]; diff --git a/testapps/PHP/runtime/.gitignore b/testapps/PHP/runtime/.gitignore deleted file mode 100644 index c96a04f00..000000000 --- a/testapps/PHP/runtime/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore \ No newline at end of file diff --git a/testapps/PHP/tests/AutoTest.php b/testapps/PHP/tests/AutoTest.php deleted file mode 100644 index b32658b12..000000000 --- a/testapps/PHP/tests/AutoTest.php +++ /dev/null @@ -1,227 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace tests; - -use think\Exception; -use think\Db; - -require_once __DIR__."/config.php"; - -class AutoTest extends TestCase -{ - - public function testGetDate() - { - $this->visit('/get_date'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\AppDate::outputDate","date"]), $log); - } - -// public function testFunc1() -// { -// $this->visit('/test_func1'); -// $this->assertResponseOk(); -// $log = $this->util->get_log(); -// $this->assertTrue($this->util->check_error($log), $log); -// $this->assertTrue($this->util->check_span($log,["app\common\AopFunction::test_func1"]), $log); -// } - - public function testFunc2Caller() - { - $this->visit('/test_func2_caller'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\AopFunction::test_func2", "app\util\Foo::test_func_2"]), $log); - } - - public function testInherit() - { - $this->visit('/test_inherit_func'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\Person::eat", "app\common\Teacher::eat", "app\common\Student::eat", "app\common\Doctor::other"]), $log); # "app\common\Doctor::eat" - } - - public function testGenerator() - { - $this->visit('/test_generator_func'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\TestGenerator::generator", "next"]), $log); - } - - public function testAbstract() - { - $this->visit('/test_abstract_func'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\AbstractStudent::eat", "app\common\AbstractStudent::drink", "app\common\AbstractPerson::breath"]), $log); # "app\common\AbstractStudent::breath" - } - - public function testInterface() - { - $this->visit('/test_interface_func'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\InterfaceStudent::setVariable", "app\common\InterfaceStudent::getHtml", "app\common\InterfaceStudent::other"]), $log); - } - - public function testClone() - { - $this->visit('/test_clone'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\TestClone::setColor", "app\common\TestClone::getColor", "app\common\TestClone::__clone"]), $log); - } - - public function testRecursion() - { - $this->visit('/test_recursion'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\TestRecursion::test_cumsum1"]), $log); #, "app\common\TestRecursion::test_cumsum2" - } - - public function testAnonymous() - { - $this->visit('/test_anonymous'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\TestAnonymous::createbell", "app\common\AopFunction::test_func1"]), $log); - } - - public function testStatic() - { - $this->visit('/test_static'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\TestStatic::static_func"]), $log); - } - - public function testFinalClass() - { - $this->visit('/test_final_class'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\TestFinalClass::test"]), $log); - } - - public function testFinalFunc() - { - $this->visit('/test_final_func'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\TestFinalFunc::test"]), $log); - } - - public function testTrait() - { - $this->visit('/test_trait'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\FuncInTrait::traitfunc", "app\common\TestTrait::test"]), $log); - } - - public function testCallback() - { - $this->visit('/test_callback'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\CallBackFunc::fnCallback1", "app\common\CallBackFunc::fnCallback2"]), $log); - } - - public function testLevel() - { - $this->visit('/test_level'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\LevelClass::public_function", "app\common\LevelClass::protected_function", "app\common\LevelClass::private_function", "app\common\OverRideLevel::public_function", "app\common\OverRideLevel::protected_function"]), $log); - } - - public function testArgs() - { - $this->visit('/test_args'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\TestArgs::test_args","[1] => 123","3.1415","[4] => Array","[5] => app\index\controller\SObject Object", "[6] => app\index\controller\SObjectString Object","[7] => abcd", "[8] => Resource id","[9] => Hello you! How are you today?"]), $log); - } - - public function testReturn() - { - $this->visit('/test_return'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\TestReturn::test_return","[0] =>", "[0] => 123", "[0] => 3.1415", "[0] => 1", "[0] => Array", "[0] => app\index\controller\SObject Object", "[0] => app\index\controller\SObjectString Object","[0] => abcd", "[0] => Resource id", "[0] => Hello you! How are you today?"]), $log); - } - - public function testException() - { - $this->get('/test_uncaught_exception'); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["app\common\TestError::throwException", "EXP value:throw some thing"]), $log); - } - - public function testCurl() - { - $_GET['remote'] = 'http%3A%2F%2Fwww.baidu.com'; - $this->get('/test_curl'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["curl_exec", "key:dst", "nsid"]), $log); - } - - public function testGuzzle() - { - $this->visit('/test_guzzle'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["GuzzleHttp\Client::request","key:dst value:example.com", "nsid"]), $log); - } - - public function testPDO() - { - $this->visit('/test_pdo'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["dst value:localhost", "PDO::prepare", "PDOStatement::execute", "PDOStatement::fetchAll"]), $log); - } - - public function testRedis() - { - $this->visit('/test_redis'); - $this->assertResponseOk(); - $log = $this->util->get_log(); - $this->assertTrue($this->util->check_error($log), $log); - $this->assertTrue($this->util->check_span($log,["Redis::set","Redis::get"]), $log); - } -} diff --git a/testapps/PHP/tests/TestCase.php b/testapps/PHP/tests/TestCase.php deleted file mode 100644 index cd63f869a..000000000 --- a/testapps/PHP/tests/TestCase.php +++ /dev/null @@ -1,37 +0,0 @@ - -// +---------------------------------------------------------------------- -namespace tests; - -require_once __DIR__."/config.php"; -use tests\Util; - -class TestCase extends \think\testing\TestCase -{ - protected $baseUrl = 'http://localhost'; - protected $util; - - /** - * @before - */ - public function beforeTest() - { - file_put_contents(PHP_LOG_PATH, ""); - $this->util = new Util(); - } - - /** - * @after - */ -// public function clearPhpLog() -// { -// file_put_contents(PHP_LOG_PATH, ""); -// } -} \ No newline at end of file diff --git a/testapps/PHP/tests/Util.php b/testapps/PHP/tests/Util.php deleted file mode 100644 index aa9351e66..000000000 --- a/testapps/PHP/tests/Util.php +++ /dev/null @@ -1,38 +0,0 @@ - -// +---------------------------------------------------------------------- - -namespace think; - -// 加载基础文件 -require __DIR__ . '/thinkphp/base.php'; - -################################################################### -define('AOP_CACHE_DIR', __DIR__ . '/Cache/'); -define('PLUGINS_DIR', __DIR__ . '/Plugins/'); -define('APPLICATION_NAME','thinkphp'); // your application name -define('APPLICATION_ID','thinkphp'); // your application id -define('PINPOINT_USE_CACHE','YES'); -require_once __DIR__ . '/vendor/pinpoint-apm/pinpoint-php-aop/auto_pinpointed.php'; -################################################################### - -// 应用初始化 -Container::get('app')->path(__DIR__ . '/application/')->initialize(); - -// 控制台初始化 -Console::init(); \ No newline at end of file diff --git a/testapps/PHP/think b/testapps/PHP/think deleted file mode 100644 index 6a923b354..000000000 --- a/testapps/PHP/think +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env php - -// +---------------------------------------------------------------------- - -namespace think; - -// 加载基础文件 -require __DIR__ . '/thinkphp/base.php'; - -// 应用初始化 -Container::get('app')->path(__DIR__ . '/application/')->initialize(); - -// 控制台初始化 -Console::init(); \ No newline at end of file diff --git a/testapps/PY/app.py b/testapps/PY/app.py index 9e8497566..0ed58fbb8 100644 --- a/testapps/PY/app.py +++ b/testapps/PY/app.py @@ -56,7 +56,7 @@ app = Flask(__name__) -set_agent("cd.dev.test.py", "cd.dev.test.py", 'tcp:dev-collector:9999', -1) +set_agent("cd.dev.test.py", "cd.dev.test.py", 'tcp:dev-collector:10000', -1) app.wsgi_app = PinPointMiddleWare(app, app.wsgi_app) @@ -374,4 +374,4 @@ def signin(): if __name__ == '__main__': - app.run(host='0.0.0.0', port=8184, processes=4, threaded=False) + app.run(host='0.0.0.0', port=80, processes=4, threaded=False) diff --git a/testapps/compose.yaml b/testapps/compose.yaml index fe8d53821..c760e0ad8 100644 --- a/testapps/compose.yaml +++ b/testapps/compose.yaml @@ -4,10 +4,9 @@ services: restart: always environment: MYSQL_ROOT_PASSWORD: 'password' + MYSQL_TCP_PORT: 3306 ports: - - '3306:3306' - expose: - - '3306' + - '33060:3306' dev-mysql-setup: image: mysql:5.7 depends_on: @@ -15,21 +14,26 @@ services: condition: service_completed_successfully # restart: "always" entrypoint: [ "bash", "-c", "cd /app/ && mysql -uroot -ppassword -hdev-mysql