<p>내가 직접 사용하는 방법은 다음과 같습니다.</p>
- phpdotenv
<li>spatie/async</li>
</ul>
<p>这是我执行的内容:</p>
<pre class="brush:php;toolbar:false;"><?php
require_once "/var/local/entrop/vendor/autoload.php";
include_once '/var/local/entrop/inc/Functions.php';
include_once '/var/local/entrop/model/Contract.php';
SpatieAsyncPool을 사용하세요.
노력하다 {
$aConn = 함수::getConnection();
$contracts = 계약::getContracts();
$pool = 풀::create();
foreach($contract를 $contract로){
$pool->add(함수 () 사용 ($aConn, $contract) {
include_once '/var/local/entrop/config/DataConfig.php';
$next_contract = 계약::getNextContract($aConn);
})
->then(함수 ($output) {
})
->catch(함수 ($예외) {
함수::write_log($Exception);
})
->timeout(함수 () {
함수::write_log("timeout");
});
}
기다립니다($pool);
$aConn->close();
}
잡기 (예외 $e){
함수::write_log($e);
}</pre>
<p>这是DataConfig의 정의:</p>
<pre class="brush:php;toolbar:false;"><?php
ini_set('display_errors',1);
error_reporting(E_ALL);
require_once "/var/local/entrop/vendor/autoload.php";
$dotenv = DotenvDotenv::createImmutable("/var/local/entrop/");
$dotenv->load();
정의('DB_HOST', $_ENV['DB_HOST']);
정의('DB_USER', $_ENV['DB_USER']);
정의('DB_PASS', $_ENV['DB_PASS']);
정의('DB_DBMS', $_ENV['DB_DBMS']);
클래스 DataConfig {
정적 $db_host = DB_HOST;
정적 $db_user = DB_USER;
정적 $db_pass = DB_PASS;
정적 $db_dbms = DB_DBMS;
}</pre>
<p>这是我的composer.json文件:</p>
<pre class="brush:php;toolbar:false;">{
"요구": {
"vlucas/phpdotenv": "^5.2",
"공간/비동기": "^1.5"
},
"자동 로드": {
"클래스맵": [
"/var/local/entrop/model/Contract.php"
]
}
}</pre>
<p>현재 나타나는 오류는 다음과 같습니다. </p>
<인용문>
<p>[2022-08-04 10:38:38]local.INFO: 공간 비동기 출력 병렬 오류:
PHP 참고: 정의되지 않은 인덱스: DB_HOST
/var/local/entropia/config/DataConfigEntropia.php 라인 12 PHP
참고: 정의되지 않은 인덱스: DB_USER
/var/local/entropia/config/DataConfigEntropia.php 라인 13 PHP
참고: 정의되지 않은 인덱스: DB_PASS
/var/local/entropia/config/DataConfigEntropia.php 라인 14 PHP
참고: 정의되지 않은 인덱스: DB_DBMS
/var/local/entropia/config/DataConfigEntropia.php 15행</p>
</인용문>
<p>제가 시도한 것은 DataConfig 파일을 자동으로 로드하여 콜백 함수에 포함시키는 것이었습니다. 그러나 그것은 작동하지 않았습니다. 어떻게 해야 합니까? </p>
phpdotenv는 오류 보고 기능이 좋지 않습니다(그리고 개인적으로 표준과 모범 사례에 제대로 의존하지 않아 여러분이 겪고 있는 주의 사항을 포함하여 여러 가지 부작용이 발생할 수 있다고 생각합니다. 일부 작성자는 이것이 버그가 아니라 기능이라고 생각했기 때문에 이를 판단하지 않을 것임을 인정해야 합니다. 결국 사용자는 스스로 작업하고 자신이 수행하는 작업을 이해해야 합니다.
특정 문제에 대해 라이브러리를 사용하는 경우 구성 방법을 알아보세요. 내 이전 의견조차도 실제로 적합하지 않을 수 있다는 메시지를 표시할 수 있습니다. 그리고 이것이 phpdotenv가 빛나는 곳입니다. 이것은 대부분의 무거운 작업을 수행하고 파일 형식이 아닌 대부분의 부분을 제어할 수 있습니다.
문제는 파일 형식이 아닙니다. 따라서 모든 환경에서 매개변수를 가져오고 오류 조건(예: 처음에 예상치 못한 값 발생)을 처리할 수 있도록 애플리케이션을 올바르게 구성하세요. 또한 이 라이브러리나 저 라이브러리를 사용할 때 어떤 실수를 했는지 밝혀내고 코드에서 이를 수정해야 합니다.