python 起動時にpythonコードを文字列で渡す

7 10月

python を PHP から呼び出して実行しようとしています。python が実行する内容を文字列で渡したいと思います。

-c オプションを利用すると良いようです(参考サイト)。

<?php
$tmp = <<< end_of_quote
import sys
print("Hello!")
end_of_quote;

$pythonCode=escapeshellarg($tmp);
$meirei="timeout 30 python3 -c $pythonCode";
$result=exec($meirei);
var_dump($result);
?>

apache から利用しようとしているのですが,実行に数秒かかります。CRIU とか使うべきなのでしょうか。

(20211027)追記
実行にかかる時間は,サーバーによってかなり異なるようです。速いものは2秒ぐらいから,遅い方は5秒以上ぐらいまで変化します。何が原因かは分からない。apache+php 経由でなく,直接端末で実行すれば1秒以内です。

(20211028)追記
import pandas as pd などを止めると,実行が速くなりました!上記ではインポートしてはいませんが。