我有控制器:
struct Patient: Codable {
let hospitalNumber: String?
let patientName: String?
let totalAmount: Double
enum CodingKeys: String, CodingKey {
case hospitalNumber = "hospitalNumber"
case patientName = "patientName"
case totalAmount = "totalAmount"
}
}
然后我通过HTTP请求调用totalAmount
,然后得到:
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(){}
public function index()
{
pcntl_fork();
}
}
然后我尝试一下:
index()
然后我将此命令称为
Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Call to undefined function App\Http\Controllers\pcntl_fork()
所以我的问题是,为什么我可以在命令中调用class CodeSheet extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'code_sheet';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
pcntl_fork();
echo "1\n";
}
}
但不能在HTTP请求中调用?
答案 0 :(得分:2)
PCNTL扩展在Web环境中被禁用(它甚至可能仅针对CLI SAPI进行编译),这与Laravel无关。
原因很简单-Web服务器本身(或PHP-FPM)可以控制流程管理,因此使用此扩展名将与其产生冲突。
由于它是UNIX专用的东西,因此在Windows下也不可用。