在cURL文档中,有一个被调用的选项CURLOPT_HTTPPROXYTUNNEL,它被定义为在启用时通过代理创建隧道.
但是,我不知道隧道是什么以及它做了什么.如果我不使用像这样的隧道会有什么不同?
curl_setopt($session, CURLOPT_HTTPPROXYTUNNEL, 1)
Run Code Online (Sandbox Code Playgroud)
更新:
我得到的是隧道指的是一个HTTP CONNECT METHOD,这就是我所理解的:
基于HTTP的隧道方法使用HTTP CONNECT方法/命令.客户端向HTTP代理发出HTTP CONNECT命令.然后,代理与特定服务器建立TCP连接:端口,并在该服务器:端口和客户端连接之间中继数据.因为这会产生安全漏洞,所以支持CONNECT的HTTP代理通常会限制对CONNECT方法的访问.代理仅允许访问特定授权服务器的白名单.
那么,问题是,使用和不使用CONNECT方法连接代理有什么区别?
我正在使用flock()函数通过获取临时文件上的锁来检查脚本的另一个实例是否已在运行,因此下一个实例应检查文件是否未锁定,否则它将停止
<?php
$fp = fopen("/var/tmp/your.lock", "w");
if (!flock($fp, LOCK_EX|LOCK_NB)) { // try to get exclusive lock, non-blocking
die("Another instance is running");
}
//my script
sleep(10);
echo 'completed successfully';
Run Code Online (Sandbox Code Playgroud)
如果我从同一个浏览器同时打开两个实例,即第一个调用获取锁定,第二个调用等待锁定而不是关闭,则在不同浏览器同时调用文件两次时脚本工作没有问题
我知道可能有其他方法来检查一个实例文件是否已经正在工作但是大多数都会做一件事然后撤消它并且在我的用例中脚本可能随时结束,因为它可能需要很长时间或超出内存限制或无论如何
任何帮助?