php脚本怎么运行,php单机版的系统不用浏览器打开怎么打开啊?
此php非彼php,所谓php是用于开发动态网页服务器端的脚本语言,脚本要在部署了php环境下才能运行,可以在浏览器里输入地址加脚本名,也可以在命令行下输入php命令加脚本名,直接点击的活就是用编辑器来编辑(记事本、dreamweaver、EditPlus、Zend Studio等)
服务器linux环境运行php?
很简单,为了可以用服务器开发和运行PHP网页,需要在计算机系统上安装三个重要组件。
Web服务器:PHP实际上可以与所有Web服务器软件一起使用,包括Microsoft的Internet信息服务器(IIS),但是最常用的是免费的Apache服务器。
数据库:PHP实际上可以与所有数据库软件一起使用,包括Oracle和Sybase,但最常用的是可免费获得的MySQL数据库。
PHP解析器:为了处理PHP脚本指令,必须安装解析器以生成可以发送到Web浏览器的HTML输出。
假设要在Ubuntu 18.04 VPS上运行网站,您将需要安装一组开源软件,包括Apache,PHP和MySQL。当运行依赖数据库和服务器端脚本语言的动态网站时,这些应用程序非常有用。
Apache是快速,安全且始终如一的高质量Web服务器软件,自1996年以来最受欢迎。
自1994年以来,PHP(超文本预处理器)是一种用于Web开发的通用服务器端脚本语言。
MySQL是Oracle设计的关系数据库服务器,并被包括Google,Youtube和Twitter在内的大型大型网站使用。它的开发始于1994年。
使用Ubuntu 18.04等Linux发行版,完全有可能创建功能齐全的LAMP(Linux Apache,MySQL和PHP)服务器。
在本指南中,我们将向您展示如何在Ubuntu 18.04服务器上安装Apache,MySQL和PHP。
步骤1:安装ApacheUbuntu 18.04维护一个中央存储库,您可以在其中使用apt命令安装大多数应用程序。要安装Apache,请运行以下命令:
$ sudo apt-get install apache2当提示您确认Apache安装时,按' Y'。安装完成后,在浏览器上输入您的VPS计算机公用IP地址。您应该看到默认的Apache网页,如下所示:
步骤2:安装MySQL在终端窗口上运行以下命令,以在Ubuntu 18.04 VPS上安装MySQL服务器。
$ sudo apt-get install mysql-server当您收到确认消息时,请按“ Y”。
MySQl服务器附带了不安全的默认设置。我们需要对其进行配置,以使我们的服务器不易受到攻击。幸运的是,有一个配置命令可以使我们更轻松。只需运行以下命令:
$ sudo mysql_secure_installation您将遇到一系列问题。这些提示将允许我们设置密码策略和root密码。还将提示我们删除匿名用户,测试数据库并禁用远程登录,如下所示。
测试您的MySQl服务器现在,您可以通过键入以下命令尝试在MySQL服务器上登录:
$ sudo mysql -u root -p请注意,系统将提示您输入在本指南前面创建的root密码。
然后,您将得到一个如上所示的mysql提示符。
如果要创建数据库,可以运行以下命令。切记用您要创建的数据库名称替换“ databasename”。
步骤3:安装PHP输入以下命令在您的Ubuntu 18.04服务器上安装PHP,当提示您确认安装时按“Y“。
$ sudo apt-get install php libapache2-mod-php测试PHP
我们可以通过在网站的根文件夹上创建一个文件来测试我们的PHP安装。为此,请键入以下命令:
$ sudo nano /var/www/html/info.php
然后复制粘贴下面的文本,然后单击CTR + X和Y保存文件。
重新启动Apache我们需要使用以下命令重新启动Apache,以使更改生效:
接下来,通过服务器的公共IP地址访问我们在您的浏览器上创建的php信息文件。例如,如果您的IP地址为111.111.111.111,请在浏览器中输入以下文本:
111.111 .111 .111 /info.php输出结果您应该看到如下所示的PHP信息文件:
总结这些就是在服务器上安装Apache,MySQL和PHP的基本步骤。现在,你可以继续为数据库安装图形用户界面(例如phpMyAdmin)以更好地管理数据库。
fastcgi下PHP运行超时问题的解决办法详解?
1,修改ASP脚本超时时间限制 右击需要修改的站点,选择“属性”,然后选择“主目录”,再选择“配置”。 选择“选项”,在ASP脚本超时中修改下时间,确定下就可以了。 2,修改PHP脚本超时时间限制 FastCGI Error The FastCGI Handler was unable to process the request. -------------------------------------------------------------------------------Error Details: •The FastCGI process exceeded configured activity timeout •Error Number: 258 (0x80070102). •Error Description: µÈ´ýµÄ²Ù×÷¹ýʱ¡£ HTTP Error 500 Server Error. Internet Information Services (IIS) 如果服务器正常,本错误往往发生在提交一个很大的字符串时发生。原因就是在处理如此“巨大”的字符串提交请求时,服务器处理超时了。可以通过设置fcgiext.ini里面的超时配置和php.ini里的超时配置来解决。当然,根据个人对服务器设置的不同,可能还需要修改更多配置信息。比如允许一次性提交多少数据。 大概给该网站建立一个独立的应用程序池也可以解决某些因此原因导致的问题。 在C:WINDOWSsystem32inetsrv文件夹中找到fcgiext.ini文件。 注意:如果是新版的PHP环境,fcgiext.ini文件是存放在C:ZkeysSoftphp目录。 打开文件后,里面关于php脚本活动超时时间(ActivityTimeout)的配置信息如下: [Types] php=PHP [PHP] ExePath=c:PHPphp-cgi.exe InstanceMaxRequests=500 EnvironmentVars=PHP_FCGI_MAX_REQUESTS:1000 ActivityTimeout=1200 里面的数字可以自行调整。上面的提示,即配置文件里的ActivityTimeout=600 这个时间超时设置,600是10分钟,最大可以设置为6000一小时。但不一定就是这个原因引起的。
php多线程教程?
PHP+shell实现多线程的方法
先写个简单的php代码,这里为了让脚本执行时间更长,方便看效果,sleep一下,呵呵!先看下test.php的代码:ls
PHP代码:
for ($i=0;$i<10;$i++) {
echo $i;
sleep(10);
}
?>
在看下shell脚本的代码,非常简单
#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
/usr/bin/php -q /var/www/html/test.php &
done
注意到在请求php代码的那行有一个&符号吗,这个是关键,不加的话是不能进行多线程的,&表示讲服务推送到后台执行,因此,在 shell的每次的循环中不必等php的代码全部执行完在请求下一个文件,而是同时进行的,这样就实现了多线程,下面运行下shell看下效果,这里你将 看到10个test.php进程再跑,再利用linux的定时器,定时请求这个shell,在处理一些需要多线程的任务,例如,批量下载时,非常好用!
php中用WEB服务器实现多线程
假设我们现在运行的是a.php这个文件. 但是我在程序中又请求WEB服务器运行另一个b.php,那么这两个文件将是同时执行的.(PS: 一个链接请求发送之后, WEB服务器就会执行它, 而不管客户端是否已经退出)
有些时候, 我们想运行的不是另一个文件, 而是本文件中的一部分代码.该怎么办呢?
其实可是通过参数来控制a.php来运行哪一段程序.
下面看一个例子:
//a.php,b.php
PHP代码:--------------------------------------------------------------------------------
function runThread()
{
$fp = fsockopen('localhost', 80, $errno, $errmsg);
fputs($fp, "GET /b.php?act=b\r\n\r\n"); //这里的第二个参数是HTTP协议中规定的请求头
//不明白的请看RFC中的定义
fclose($fp);
}
function a()
{
$fp = fopen('result_a.log', 'w');
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "\r\n");
fclose($fp);
}
function b()
{
$fp = fopen('result_b.log', 'w');
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "\r\n");
fclose($fp);
}
if(!isset($_GET['act'])) $_GET['act'] = 'a';
if($_GET['act'] == 'a')
{
runThread();
a();
}
else if($_GET['act'] == 'b') b();
?>
--------------------------------------------------------------------------------
打开result_a.log 和 result_b.log 比较一下两个文件的中访问的时间. 大家会发现, 这两个的确是在不同线程中运行的.有些时间完全一样.
上面只是一个简单的例子, 大家可以改进成其它形式.
既然PHP中也能多线程了, 那么问题也来了, 那就是同步的问题. 我们知道 PHP本身是不支持多线程的. 所以更不会有什么像Java 中synchronize的方法了. 那我们该如何做呢.
1. 尽量不访问同一个资源. 以避免冲突. 但是可以同时像数据库操作. 因为数据库是支持并发操作的. 所以在多线程的PHP中不要向同一个文件中写入数据. 如果必须要写的话, 用别的方法进行同步.. 如调用 flock对文件进行加锁等. 或建立临时文件并在另外的线程中等待这个文件的消失 while(file_exits('xxx')); 这样就等于这个临时文件存在时, 表示其实线程正在操作
如果没有了这个文件, 说明其它线程已经释放了这个.
2. 尽量不要从runThread在执行fputs后取这个socket中读取数据. 因为要实现多线程, 需要的用非阻塞模式. 即在像fgets这样的函数时立即返回.. 所以读写数据就会出问题. 如果使用阻塞模式的话, 程序就不算是多线程了. 他要等上面的返回才执行下面的程序. 所以如果需要交换数据最后利用外面文件或数据中完成. 实在想要的话就用socket_set_nonblock($fp) 来实现.
说了这么多, 倒底这个有没有实际的意义呢? 在什么时候需要这种用这种方法呢 ?
答案是肯定的. 大家知道. 在一个不断读取网络资源的应用中, 网络的速度是瓶颈. 如果采多这种形式就可以同时以多个线程对不同的页面进行读取.
本人做的一个能从8848、soaso这些商城网站搜索信息的程序。还有一个从阿里巴巴网站上读取商业信息和公司目录的程序也用到了此技术。 因为这两个程序都是要不断的链接它们的服务器读取信息并保存到数据库。 利用此技术正好消除了在等待响应时的瓶颈。
php模拟实现多线程的三种方法
PHP语言本身是不支持多线程的. 总结了一下网上关于PHP模拟多线程的方法, 总的来说, 都是利用了PHP的好伙伴们本身所具有的多线程能力. PHP的好伙伴指的就是LINUX和APACHE啦, LAMP嘛.
另外, 既然是模拟的, 就不是真正的多线程. 其实只是多进程. 进程和线程是两个不同的概念. 好了, 以下方法都是从网上找来的.
1. 利用LINUX操作系统
for ($i=0;$i<10;$i++) {
echo $i;
sleep(5);
}
?>
上面存成test.php, 然后写一段SHELL代码
#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
php -q test.php &
done
2. 利用fork子进程(其实同样是利用LINUX操作系统)
declare(ticks=1);
$bWaitFlag = FALSE; /// 是否等待进程结束
$intNum = 10; /// 进程总数
$pids = array(); /// 进程PID数组
echo ("Startn");
for($i = 0; $i < $intNum; $i++) {
$pids[$i] = pcntl_fork();/// 产生子进程,而且从当前行之下开试运行代码,而且不继承父进程的数据信息
if(!$pids[$i]) {
// 子进程进程代码段_Start
$str="";
sleep(5+$i);
for ($j=0;$j<$i;$j++) {$str.="*";}
echo "$i -> " . time() . " $str n";
exit();
// 子进程进程代码段_End
}
}
if ($bWaitFlag)
{
for($i = 0; $i < $intNum; $i++) {
pcntl_waitpid($pids[$i], $status, WUNTRACED);
echo "wait $i -> " . time() . "n";
}
}
echo ("Endn");
?>
3. 利用WEB SERVER, PHP不支持多线程, APACHE可是支持的, 呵呵.
假设我们现在运行的是a.php这个文档. 但是我在程式中又请求WEB服务器运行另一个b.php
那么这两个文档将是同时执行的.(代码同上)
当然啦,也可以把需要多线程处理的部分交给JAVA去处理, 然后在PHP里调用, 哈哈.
system('java multiThread.java');
?>
扩展资料:PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。
总是有人在黑php?
PHP 现在名声很糟糕,因为它曾经是“可怕”的。
本文试着回答一些常见的关于 PHP 的断言,目的是向非技术人员解释,PHP 并不像许多人所说的那么糟糕。1、它是不是鼓励糟糕的实践?不再是了。过去,许多开发者被书本教授非常糟糕的实践,因此 PHP 代码的质量非常差。PHP 曾经还允许你做一些非常奇怪的事情,使得它非常容易构建,但维护起来却是一场噩梦。这些不再是常见的问题。随着高质量学习材料的引入,这些材料易学且易获取,一名新的开发人员可以以正确的方式学习 PHP。这样就可以避免初级开发者因为不知道构建事物的正确方法而编写一些维护起来非常痛苦的代码。随着框架的引入,导致许多糟糕体验的大部分通用代码现在都自动完成了;因此,开发人员只需使用框架,框架就可以正确地对其进行编码。而且,这些年来,一些糟糕的实践是由缺失的特性造成的,导致了一些本不应该被允许的事情被允许。现在大多数情况下,甚至不可能实现以前编写的一些东西来导致这种声誉。小结它不再鼓励糟糕的实践…通过使用框架避免了糟糕实践。语言特性现在有很多讨论。糟糕的特性不再受到支持。PHP 添加了其他语言中存在的大部分(即使不是全部)的特性。2、它的安全性是不是很差?过去,PHP 应用程序的安全性通常很差,因为语言允许这样做。这些东西不再被使用,因为 PHP 应用程序的开发现在已经完全不同。通过使用自动加载程序来包含文件而不是动态包含文件,已经移除了远程和本地文件包含(其中 PHP 从其它地址而不是最初打算的地址读取文件)。通过广泛使用模板系统(可以自动处理显示动态内容的转义和安全问题),已经避免了由于直接在 PHP 中直接使用 HTML 所导致的跨站脚本攻击(其中一个用户将 JavaScript 脚本添加到要显示给另一个用户的地方)。通过在 SQL 中使用 prepared 语句,避免了 SQL 注入攻击(这是由于需要构建 SQL 查询并将查询和数据一起发送导致的,其中用户可以向查询中增加额外的 SQL 命令)。另外,ORM 的使用也很普遍,它确保用户数据和查询是分开发送的,而 SQL 不能将其视为单独的命令。通过广泛使用且采用 nonce 系统的 form 库,避免了跨站请求伪造(其中,用户能够被诱骗在你的站点上执行某些操作)。小结通过使用自动加载程序(所有主流框架的标配),避免了远程和本地文件包含。通过使用模板语言作为标准或一种前端框架(例如 React),避免了跨站脚本(XSS)攻击。通过使用 ORMs 和广泛使用 prepared 语句,避免了 SQL 注入。通过使用 nonce token(被所有主流框架自动支持),避免了跨站请求伪造(CRSF)攻击。3、它是不是真的很慢?这取决于你把它与什么比较。如果你把 PHP 与 Java、C 或者 Go 比较,那么它是比较慢。但是如果你把 PHP 与 Python、Ruby 等等比较,那么它并不慢。在同类型的语言中,PHP 是最快的之一,并且不断在提高性能。大多数情况下,你的应用程序慢是因为服务器过载或者数据库查询慢。这些问题在任何语言中都会存在。小结PHP 与编译型语言相比是比较慢。PHP 与其它脚本型语言相比是比较快的。网站慢通常不是由于使用的语言不够快,而是因为服务器或数据库导致的性能问题。4、它的伸缩性是不是真的很差?实际上,任何语言都可以伸缩。编译型语言(例如 Go、C 或 Rust)比脚本型语言(例如 PHP)的扩展成本更低。然而,它们并不是为了同样的任务而设计的。事实上,它们都是一样的;这简单地归结于你使用的服务器数量。如果你使用足够多的服务器,你可以扩展任何应用程序。PHP 比其它脚本型语言的扩展成本更低,因为它需要更少的资源来开始运行,并且可以在具有更多 CPU 的较小内存的服务器上运行。另外,对于伸缩性,重要的是数据库。如果你能够扩展你的数据库,你就可以扩展你的应用程序。数据库比应用服务器更难扩展。增加另一个读取数据库的客户端很容易;但是,让数据库快速运行要难得多。小结任何语言都可以伸缩;这取决于你使用多少服务器。扩展的真正问题是数据库而不是所使用的应用程序语言。如果你能够扩展你的数据,你就能扩展你的应用程序。5、我应该一直使用它吗?不。每种编程语言都有其擅长的领域。PHP 非常适合 Web 应用程序。你应该用它来构建网站和 API。如果你正在构建一个系统应用程序,其中每毫秒都很重要,使用 Rust 或者 C。如果你正在构建一个人工智能应用程序,Python 是一个好选项。如果你正在构建一个 SaaS 应用程序,PHP 是一个好选项。如果你正在构建一个安卓应用程序,Kotlin 是一个好选项。如果你正在构建一个运行在多个平台上的应用程序,Java 是一个好选项。小结每种语言都有其最佳用例。PHP 的最佳用例是 Web 应用程序。Go、Rust、C 适合系统应用程序。Python 适合人工智能。Kotlin 适合安卓应用程序。Java 适合与平台无关的应用程序。6、结论每年都有在吐槽php,可是你这个phper现在过期了吗?很多关于 PHP 的说法都已经过时 10 年了。在我看来,如果有人给你关于某个技术主题的过期 10 年的信息,那么这个人可能不是你想要信任的技术专家。PHP 是创建 Web 应用程序的一门好编程语言,我认为它是实现 Web 应用程序开发的最佳语言。