Heterogeneity interpreter integration: Difference between revisions

From LemonWiki共筆
Jump to navigation Jump to search
mNo edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
Considerations of multi-languages Interpreter integration
Considerations of multi-languages Interpreter integration e.g. PHP calling Python


== PHP calling Python ==
Input / Output
Input / Output
* ill-formed input and output
* ill-formed input and output
Process
* Print the percentage of data processing


Unexpected conditions / errors
Unexpected conditions / errors
Line 14: Line 18:
** First interpreter timeout/crash: e.g. First interpreter (.PHP) is timeout but second interpreter (.PY) is still running.
** First interpreter timeout/crash: e.g. First interpreter (.PHP) is timeout but second interpreter (.PY) is still running.
** Second interpreter timeout/crash
** Second interpreter timeout/crash
** Process management: Monitor and recycle the process


* System level
* System level
** e.g. memory error caused by second interpreter
** e.g. memory error caused by second interpreter
* API level
* API level
== PHP calling MySQL ==
Purpose
* PHP to generate mysqldump command for database backup and export operations with Chinese character support
Input / Output
* Character encoding mismatch between PHP UTF-8 and MySQL client character sets
* Hexadecimal representation<ref>[https://dev.mysql.com/doc/refman/8.4/en/hexadecimal-literals.html MySQL :: MySQL 8.4 Reference Manual :: 11.1.4 Hexadecimal Literals]</ref> required for Chinese characters: '範例中文字' → 0xE7AF84E4BE8BE4B8ADE69687E5AD97
* Export validation discrepancy: Expected xxx SQL queries
Process
* Character set validation before MySQL command execution
* Environment synchronization: PHP, Windows CMD, and MySQL client charset alignment
* Hexadecimal conversion for non-ASCII parameter bypass
<pre>
function toHexadecimal($text) {
if (!mb_check_encoding($text, 'UTF-8')) {
$text = mb_convert_encoding($text, 'UTF-8', 'auto');
}
return '0x' . strtoupper(bin2hex($text));
}
</pre>


== References ==
== References ==
Line 28: Line 57:
* [http://php.net/manual/en/function.set-time-limit.php PHP: set_time_limit - Manual]
* [http://php.net/manual/en/function.set-time-limit.php PHP: set_time_limit - Manual]
* [https://stackoverflow.com/questions/27863484/run-python-script-from-php-save-process-pid-and-dont-wait-it-to-finish Run Python script from php, save process pid, and don't wait it to finish - Stack Overflow] ''un-verified''
* [https://stackoverflow.com/questions/27863484/run-python-script-from-php-save-process-pid-and-dont-wait-it-to-finish Run Python script from php, save process pid, and don't wait it to finish - Stack Overflow] ''un-verified''
* [https://stackoverflow.com/questions/1881582/whats-the-difference-between-escapeshellarg-and-escapeshellcmd php - What's the difference between escapeshellarg and escapeshellcmd? - Stack Overflow]
* [[Execute php script in a bat file]]
* [https://errerrors.blogspot.com/2018/08/run-java-jar-from-php.html 如果透過 PHP 網站呼叫 Java JAR 執行結果]


[[Category:Programming]] [[Category:PHP]] [[Category:Python]]
[[Category: Programming]]  
[[Category: PHP]]  
[[Category: Python]]
[[Category: MySQL]]
[[Category: Revised with LLMs]]

Latest revision as of 19:14, 24 September 2025

Considerations of multi-languages Interpreter integration e.g. PHP calling Python

PHP calling Python[edit]

Input / Output

  • ill-formed input and output

Process

  • Print the percentage of data processing

Unexpected conditions / errors

  • Entry point
    • Run the script from web browser: timeout[1]/crash
    • Run the script from command line: length limit e.g.
      • On Win Os windows.png XP[2]: 8191 characters
      • On macOS icon_os_mac.png high Sierra[3]: 262144 returned after keyin getconf ARG_MAX
  • Interpreter level
    • First interpreter timeout/crash: e.g. First interpreter (.PHP) is timeout but second interpreter (.PY) is still running.
    • Second interpreter timeout/crash
    • Process management: Monitor and recycle the process
  • System level
    • e.g. memory error caused by second interpreter
  • API level


PHP calling MySQL[edit]

Purpose

  • PHP to generate mysqldump command for database backup and export operations with Chinese character support

Input / Output

  • Character encoding mismatch between PHP UTF-8 and MySQL client character sets
  • Hexadecimal representation[4] required for Chinese characters: '範例中文字' → 0xE7AF84E4BE8BE4B8ADE69687E5AD97
  • Export validation discrepancy: Expected xxx SQL queries

Process

  • Character set validation before MySQL command execution
  • Environment synchronization: PHP, Windows CMD, and MySQL client charset alignment
  • Hexadecimal conversion for non-ASCII parameter bypass
function toHexadecimal($text) {
	if (!mb_check_encoding($text, 'UTF-8')) {
		$text = mb_convert_encoding($text, 'UTF-8', 'auto');
	}
	return '0x' . strtoupper(bin2hex($text));
}

References[edit]

Related articles[edit]