Articles of php

在Ngnix和Ubuntu服务器上设置PHP

我如何在我的服务器上安装PHP并将其用于我的网站? 我在nginx上。 我在Ubuntu上使用apt-get安装了mysql和php。 我也可以在同一个网站上使用php和node.js吗? 我不知道从哪里开始,也没有可以发布的代码。 提前致谢。

Nodejs是否可以validationPHP用户的会话?

请随身携带,因为这是一个很长的问题,但有很多细节来解释我的问题。 我在做什么? 我正在尝试在PHP应用程序和电话系统的REST API之间build立通信。 由于我的网站都是用PHP编写的,所以我决定用cURL调用API来构build使用PHP的通信。 为了让你加快速度,用户和API之间有两种types的通信,我喜欢把它们分成两个不同的类别 发送一次/接收一次这将是一个例子,用户尝试拨打一个新的电话号码“拨打800-123-4567”。 API接收请求并返回一个交互ID,以允许用户控制呼叫(即,断开,静音,搁置….) 每秒发送一次/接收在此通信中,我将在用户会话和API之间创build“持续”连接。 然后,每隔一秒,我会检查API的新消息。 在接收到来自API的消息之后,我必须更新用户的caching,读取最新用户的caching,并最终向浏览器发送caching数据。 问题? HTTP是无状态的。 用户发送给Web服务器的每个请求都会生成一个新的TCP连接。 这个问题是,我每秒查询API的新消息,我将有一个新的TCP连接。 在每个用户的任何给定时间平均需要约200个TCP连接。 所以,如果我有300个用户使用应用程序/服务器,那么大约有60,000个TCP连接为Web服务器打开。 正如你可以清楚地看到解决scheme在这里不能很好地扩展,服务器在我面前爆炸是一个时间问题… 🙁 另一个问题是PHP不是asynchronous的,如果与API的通信花费更长时间或返回错误,则会导致问题。 FWIW,我试图用JavaScript的SharedWorker来消除一些开销。 我每一个尝试服务器发送事件,但用户仍然产生了太多的TCP连接到服务器。 没有什么第一个问题,我只能够减less一点连接。 Nodejs可以帮忙吗? 几个人build议我使用Nodejs而不是PHP来完成这个任务。 当然,我不打算把我的PHP应用程序改成Nodejs,因为这是疯狂的,因为我的应用程序是巨大的。 我想考虑运行一个nodejs服务器作为PHP服务器和API服务之间的中间人。 这个想法是在节点服务器上运行一个WebSocket。 然后,客户端将任何通信传递给WebSocket,然后WebSocket将通信发送到服务器。 这听起来不错,但是一旦深入挖掘,似乎越来越棘手。 Nodejs的挑战 当用户login到我的PHP应用程序,我validation他们的凭据,一旦他们在那我创build一个存储到MySQL数据库的会话。 一个会话是有效的以下必须是正确的 IP地址必须与创build会话的IP相匹配 代理数据也必须匹配(我可以没有它的nodejs) 会话的空闲时间必须less于900秒。 为了Nodejs开始通信,它必须首先创build一个新的连接到API。 连接被接受后,nodejs必须跟踪“接收到的API”的下列数据 CSFR令牌 会话ID Http Cookie 为了Nodejs连接到API,它必须通过用户名,密码,服务器名称,端口和站名。 我有所有需要的信息存储到MySQL数据库,我可以很容易地得到使用PHP。 面临的挑战是NodeJS必须采取PHP会话,validation它,从数据库中提取API所需的信息,然后build立与API的连接。 问题 nodejs可以使用PHP会话来validation用户吗? 如果这样怎么样? nodejs如何使用TCP连接来防止我重载服务器?

在节点js不可见php会话(redis)

我使用Redis服务器来共享Php和Node js之间的会话。 对于Node js客户端使用“connect-redis”,而对于php客户端,使用redis-session-php和Predis。 我从这里获取了大部分的代码(来自正确答案)的堆栈升级版本。 app.js var express = require('express'), app = express(), cookieParser = require('cookie-parser'), session = require('express-session'), RedisStore = require('connect-redis')(session); app.use(express.static(__dirname + '/public')); app.use(function(req, res, next) { if (~req.url.indexOf('favicon')) return res.send(404); next(); }); app.use(cookieParser()); app.use(session({ store: new RedisStore({ // this is the default prefix used by redis-session-php prefix: 'session:php:' }), // use the […]

PHP会话使用FileSystem与Node.js共享?

有几种方法可以与Node.js共享PHP会话。 一种方法是将PHP会话保存在非RedSQL数据库(如Redis)中,并通过Node.js访问它。 另一个stream行的方法是使用memcached服务器。 上述两种方法都需要: 1)运行另一台服务器。 2)更改默认的PHP会话处理程序。 为什么我不应该使用默认的PHP会话处理程序,并通过使用“fs”(FileSystem)核心库来读取Node.js中的文件内容来访问会话文件? 除了速度之外还有什么其他的原因,不能直接访问和读取会话文件,假设服务器之间不应该进行远程操作?

php和node.js之间的pbkdf2差异

我使用Node.js使用pbkdf2生成密码散列并将它们存储到数据库中。 另外我正在做一些用PHP制作的网页,让你用户重置他们的密码,所以除非我在node.js中使用web服务来构build哈希,我想在2个系统中运行该algorithm。 不幸的是,似乎我得到了不同的结果,我不能混合这两个库。 我在node.js中使用的代码使用模块password-hash-and-salt,基本上调用crypto.pbkdf2,而php使用hash_pbkdf2。 这些是我用来testing它的脚本: PHP: <?php $password = $argv[1]; $iterations = 10000; $length = 64; $salt = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM); $key = hash_pbkdf2("sha256", $password, $salt, $iterations, $length,true); echo "HASH: pbkdf2\\$" . $iterations . "\\$" . bin2hex($key) . "\\$" . bin2hex($salt). "\n"; echo "Key length: " . strlen(bin2hex($key)) . "\n"; echo "Hash length: " . strlen(bin2hex($salt)) […]

用于生成随机ID并避免类似Nodejs帽子模块的冲突的PHP库

是否有任何库可用于在PHP中生成随机ID。 在Nodejs中,我们有hat模块来生成随机ID 节点js。 var hat = require('hat'); var rack = hat.rack(); console.log(rack()); console.log(rack()); 任何PHP库?

URL在NodeJs中编码string

在PHP中我们有: echo '<a href="mycgi?foo=', urlencode($userinput), '">'; 什么是urlencode();的NodeJs版本urlencode();

Node.js替代PHP的exec

我想写一个C软件(如素数分解),并将其放置在我的Web服务器上(基于Node.js )。 然后我想要一个HTML表单和一个button的HTML 。 当button被点击时, C应该被执行(在服务器上),其中一个文本字段被作为inputparameter passing。 C的输出应该再次传递给HTML文本字段。 在PHP这样的事情是可能的: <?php exec('~/tools/myprog.o'); ?> 我怎么会在Node.js这样做( Express.js也很好)。 特别是input/输出redirect?

JWT微服务体系结构中的身份validation

题 问题如何在微服务应用程序中创build身份validation服务,并让其他服务检查该令牌(JWT)并检索用户? 可能的scheme 我目前的想法是基于身份validation服务在用户身份validation后将{ token, user }插入到Redis中。 所有其他服务都可以在Redis中检查用户的Authorization: Bearer kdI8$dj$nD&…标头令牌。 如果token存在于Redis中,则用户通过身份validation。 如果token在Redis中不存在,则用户不会被authentication。 用户将{ username, password }发送至授权服务 Auth服务对凭证进行身份validation并检索{ token, user } Auth服务将{ token, user }插入到Redis中 用户使用{ token }向Service-1发送请求 Service-1在Redis中为{ token }装饰,并检索{ token, user } Service-1做它的事情,并发回{ data } 这种方法有没有可能的安全,逻辑或架构问题?

执行Linux shell脚本时出错

我试图执行一个shell脚本来启动一个djtmlx实时更新框架中的nodejs服务器。 根据dhtmlx文档,nodejs服务器将被放入web根目录。 我写了一个位于/ var / www(nodejs文件夹所在位置)的batch file,这样服务器就可以启动,或者根据需要重新启动,而无需打开terminal: #!/bin/bash nodejs nodejs/server.js 从一个脚本有一个PHP脚本的Ajax调用: $("#starter").click(function(response){ var jqxhr = $.ajax( "./phpFunctions/nodeStarter.php" ) .done(function(response) { alert(response); }) .fail(function() { alert(response); }) }); 在nodeStarter.php中有以下内容: error_reporting(E_ERROR | E_WARNING | E_PARSE); $output = shell_exec("/var/www/nodeStart 2>&1; echo $?"); echo "<pre>$output</pre>"; unset $output; 和错误消息: 咦? 似乎是在Web文件夹中,而不是在我告诉它的Web根目录server.js。 我很困惑。