我有一段PHP代码使用cURL来发布请求,它使用curl_multi_*函数来提高性能.
它在托管的PHP服务器上运行良好.
但是在127.0.0.1我的WAMPServer失败了.单个cURL请求在WAMPServer上工作正常,但curl_multi_select()只有在脚本最终超时之前才返回-1.
代码...是关于curl_multi_exec的PHP.net手册页上的示例#1:http://www.php.net/manual/en/function.curl-multi-exec.php 这是导致无限循环的片段:
$active = null;
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($mh) != -1) {
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
Run Code Online (Sandbox Code Playgroud)
测试Vista的防火墙已禁用.
有谁知道如何获得curl_multi_*工作WAMPServer或者是有什么方法来检测curl_multi_*支持PHP脚本中,所以我可以做一个备用的?
在前面的问题中,我得到了在odbc_connect调用上使用try-catch语句的建议。好了,说完了,这就是我试图做的。
以下代码尝试使用虚假的登录信息连接到数据库,但无法正常运行。
<?php
try
{
odbc_connect('BogusDatabase','BogusUser','BogusPassword');
}
catch (Exception $e)
{
echo "Something went wrong!";
}
?>
Run Code Online (Sandbox Code Playgroud)
我希望输出是一个字符串,指出“出了点问题!”。相反,我得到这个:

我正在使用Wampserver运行我的PHP代码。我不知道这是否是问题的一部分。
一段时间以来,我一直在尝试自动备份在本地主机中运行的一些数据库。我的电脑上运行着几个个人应用程序,我想连续备份他们的数据库,以免丢失任何这些信息(因为它不在线,所以总是存在我的电脑崩溃或病毒擦除所有内容的问题出等)
\n\n所以我一段时间以来一直在寻找一种方法来做到这一点。由于这是本地虚拟服务器,我不断碰壁。但最后我似乎找到了一种方法。
\n\n它在输出端完美工作。我的意思是,我想要一些可以将数据库输出到我的 Dropbox 的东西,例如,这可以工作......它输出一个文件,好吧,但该文件是空的,这只能意味着它无法检索实际数据。我尝试了多种方法,包括在 Wamp 文件夹中设置 SQL 数据的确切路径,但没有效果。
\n\n我有点被困在这里了。也许有人可以帮我。谢谢!
\n\n我使用的 PHP 非常简单,只需一个 \xc2\xb4exec()\xc2\xb4 命令,如下所示:
\n\nexec('mysqldump --user='.$_SESSION['user'].' --password='.$_SESSION['password'].' --host=localhost myDatabase > C:\\Users\\Xavier\\Dropbox\\db_backups\\file.sql');\nRun Code Online (Sandbox Code Playgroud)\n 我有一个正在运行的PHP脚本,正在我的计算机上进行测试(正在运行WampServer),并且注意到它正在运行时,该网站的其余部分将不会加载(浏览器仅显示加载图标)。
一次只能运行一个PHP脚本吗?如果是这样,是否意味着如果我的网站上的脚本需要30秒钟才能运行,在此期间没有人能够使用该网站?
更多信息:
在运行长时间运行的脚本时,几乎不使用CPU或内存。
我有一个Windows 7系统与Wamp 2.4运行这个简单的PHP代码
for ($year = 2004; $year <= 2015; $year++){
for ($month = 1; $month <=12; $month++){
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$result = mysql_query("SELECT sum(Weight) FROM Lab WHERE YEAR(date)=$year AND MONTH(date)= $month") or die(mysql_error());
while ($rows = mysql_fetch_array($result)) {
$weight = $rows['sum(Weight)'];
${'mes'.$month}=$weight;
$weight3=$weight+$weight3;
$weight=0;
}
}
Echo $year, " Total - ", $weight3, "<br>";
Echo $mes1, ", ", $mes2, ", ", $mes3, ", ", $mes4, ", ", $mes5, ", ", $mes6, ", ", …Run Code Online (Sandbox Code Playgroud) 我在我的系统上安装了 wampserver,安装后我localhost在浏览器中尝试过,但它不起作用。
因为我的系统中还安装了 OSGEO 并安装了 MYSQLServer。
因此,我将 wampservers Apache 的端口号更改为 8080,并将 mysql 端口从 3306 更改为 3307 my.ini。
我在 httpd.conf 文件中更改了这些行。
Listen 0.0.0.0:8080
Listen [::0]:8080
Run Code Online (Sandbox Code Playgroud)
现在 wamp 正在工作。但是当我在浏览器中尝试“ http://localhost:8080/phpmyadmin/ ”时,我收到以下错误:
谢谢你。
编辑#2
在我的www/目录中,我有我的服务器脚本和文件.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([\w-]+)$ api.php [L]
DirectoryIndex api.php
#RewriteCond %{REQUEST_URI} !echo.php
#RewriteRule .* echo.php?ua=%{HTTP_USER_AGENT}&https=%{HTTPS} [L]
SetEnvIf Origin "^http(s)?://(.+\.)?(dev.local\.com|localhost:8100|localhost:4200)$" ORIGIN=$0
Header always set Access-Control-Allow-Origin %{ORIGIN}e env=ORIGIN
Header merge Vary Origin
Header set Access-Control-Allow-Credentials "true"
Header set Access-Control-Allow-Headers "Content-Type, cookie"
Header set Content-Type "application/json"
Header set Access-Control-Allow-Methods "GET, POST"
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"
Run Code Online (Sandbox Code Playgroud)
在我的桌面上,我有运行的 Angular 项目:
ng build --prod --aot
Run Code Online (Sandbox Code Playgroud)
我里面有一个文件夹,名为dist/angular/ …
我在 Windows 7 上安装了 WampServer 版本 3.1.4 64 位,它附带 PHP 版本 php5.6.38、php7.0.32、php7.1.22 和 php7.2.10。我想使用 php5.6.x 而不是 php7.x。
因此,当我从服务器托盘图标从 php7.2.10 切换到 php5.6.38 时;它不会更新 phpinfo() 显示的实际 php 版本。在本地主机上,它仍然显示:
PHP Version: 7.2.10
Run Code Online (Sandbox Code Playgroud)
但是,它在 CLI 端进行了更新。这是通过在 cmd 中运行来测试的:
php -v
Run Code Online (Sandbox Code Playgroud)
结果是:
c:\wamp64\bin\apache\apache2.4.35\bin>php -v
PHP 5.6.38 (cli) (built: Sep 13 2018 12:45:08)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
Run Code Online (Sandbox Code Playgroud)
重新启动WAMP服务,重新打开终端,重新启动计算机后,仍然没有通过phpinfo更新。这可能与 Apache 服务使用的 php 版本有关。我怎样才能将其更改为 5.6.x 有什么建议吗?非常感谢
注意:该问题与更改 php cli 版本无关,正如此处指出的那样。我不明白为什么他们中的一些人在没有仔细阅读该帖子的情况下坚持认为这是潜在的重复。
我正在尝试使用here文档并将其存储在变量中.问题在于notepad ++,这里的文档注释了初始化行下面的所有内容,包括PHP文件的结束标记.我究竟做错了什么?
<?php
$html = <<<HTMLBLOCK
Hello world
HTMLBLOCK;
?>
Run Code Online (Sandbox Code Playgroud) 我的系统是
我安装了xdebug dll,就像在https://xdebug.org/docs/install中提到的那样.
php.ini中:
[xdebug]
zend_extension=F:\wamp64\bin\php\php5.6.25\ext\php_xdebug-2.5.0-5.6-vc11-x86_64.dll
Run Code Online (Sandbox Code Playgroud)
我查看了php.ini,发现了zend-Logo和这个
编译器MSVC11(Visual C++ 2012)
...
该程序使用Zend脚本语言引擎:
Zend Engine v2.6.0,版权所有(c)1998-2016 Zend Technologies
with Xdebug v2.5.0,Copyright(c)2002-2016,由Derick Rethans提供
我在https://xdebug.org/wizard.php上运行测试并得到了
Summary
Xdebug installed: no
Server API: Command Line Interface
Windows: yes - Compiler: MS VC11 - Architecture: x64
Zend Server: no
PHP Version: 5.6.25
Zend API nr: 220131226
PHP API nr: 20131226
Debug Build: no
Thread Safe Build: yes
Configuration File Path: C:\WINDOWS
Configuration File: …Run Code Online (Sandbox Code Playgroud)