我有一个每天的cron工作,大约需要5分钟才能运行(它会收集一些数据,然后进行各种数据库更新).它工作正常,但问题是,在这5分钟内,网站完全没有响应任何请求,HTTP或其他.
看起来cron作业脚本在运行时会占用所有资源.我在PHP文档中找不到任何帮助我的东西 - 如何让脚本知道只用掉50%的可用资源?我宁愿让它运行10分钟并在此期间让用户可以使用该站点,而不是让它运行5分钟并且每天都有用户抱怨停机时间.
我确信我可以想出一种方法来配置服务器本身来实现这一点,但我更喜欢在PHP中有一个内置的方法来解决这个问题.在那儿?
或者,作为计划B,我们可以在脚本运行时将所有用户请求重定向到静态停机页面(与现在发生的情况相反,这是页面无限期加载或最终超时).
这看起来像一个非常基本的问题,我已经创建了几十种形式,但我只是看不出这里的问题.
我有这两个单选按钮:
<input type='radio' class='free atype' value='0' name='dutch' checked='checked'/> Free<br/>
<input type='radio' class='paid atype' value='1' name='dutch' /> Paid
Run Code Online (Sandbox Code Playgroud)
显然,默认情况下应检查第一个.
但是,当我检查第二个然后刷新页面时,第二个收音机仍保持选中状态.我知道这是错误的行为,但我不能为我的生活看到我做错了什么.
我在Firefox上尝试这个.
我正在尝试为画布应用程序获取登录用户的个人资料图片,但我希望以特定的大小.
这是可能的,如果是的话,怎么样?
目前我正在使用以下内容:
graph.facebook.com/{user's FB ID}/picture?type=square
Run Code Online (Sandbox Code Playgroud)
这给了我50px乘50px的图像.还有一些选项可以使用type = normal和type = large来提供大图像尺寸,但这些不是方形图像,也不是我想要的确切尺寸.
具体来说,有没有办法直接从Facebook获得80px到80px的会员个人资料图片,而无需下载更大的图片和缩小/剪裁?
我的网站上有一个模式弹出框,位于<body>标签内.
这是弹出窗口的样式:
.modalbox {
text-shadow: none;
position: absolute;
padding: 22px;
left: 50%;
background: white;
z-index: 90;
border-radius: 6px;
display: none;
font-size: 14px;
width: 80%;
}
Run Code Online (Sandbox Code Playgroud)
设置宽度很简单.然而,垂直内容是动态的,其中我的问题在于 - 我不希望盒子比浏览器窗口高.
我已经尝试过设置max-width: 90%;,如果body页面的长度不比浏览器窗口长,则可以正常工作.
但是,当body溢出(和滚动条出现)时,90%上面的最大高度是相对于body窗口的高度而不是窗口的高度.这意味着模式框可以垂直超出窗口,迫使用户滚动页面以查看其完整内容.
我想要实现的是,最大高度为浏览器窗口的 90%,以便整个模态框始终可见.
我将处理溢出,我只需要帮助弄清楚如何以上述方式限制垂直尺寸.
我正在使用带有socket.io的Node.js进行多人纸牌游戏,还有玩家可以加入的游戏室.
为了加入一个房间,我只需使用:
io.sockets.on('connection', function (socket) {
socket.on('joinRoom', function (gid) {
//gid is game ID - create room name based on this and join the room
var room = 'game'+gid;
socket.join(room);
});
});
Run Code Online (Sandbox Code Playgroud)
我的问题是,检查套接字是否连接到某个房间的最快方法是什么?我知道我可以在一个数组中获取该房间中的所有套接字,然后检查目标套接字是否在数组中,但我猜测应该有更基本的语法.我正在寻找(伪代码)将是
if(socket with ID "z8b7dbf98i" is in room "game10")
//do something
Run Code Online (Sandbox Code Playgroud) 首先,是的,我知道那里有一个非常相似的问题,但那里的答案并不适用于我的情况,也没有迹象表明它解决了另一个人的问题.
根据Racthet文档中的教程,我在我的Apache服务器上安装了ZMQ.经过很多挫折后我成功地安装了所有东西,我准备好运行一个例子.这个简单的PHP脚本放在post.php这行中(在一些相当简单的PHP之后,设置变量等):
$context = new ZMQContext();
Run Code Online (Sandbox Code Playgroud)
但是,它会抛出此错误:
Fatal error: Class 'ZMQContext' not found in /home/lights/public_html/apps/post.php on line 12
Run Code Online (Sandbox Code Playgroud)
我已经包含extension=zmq.so在我唯一使用的php.ini文件的末尾,正如zeromq文档所建议的那样.为了确保Apache加载与页面相同的php.ini,我检查了.Apache给了我与在页面上运行phpinfo()完全相同的信息:
Configuration File (php.ini) Path /usr/local/lib
Loaded Configuration File /usr/local/lib/php.ini
Run Code Online (Sandbox Code Playgroud)
由此我得出结论,如果我php post.php从终端运行,应该出现相同的错误.但是,在这种情况下没有显示错误 - 似乎PHP代码确实发挥了作用.所以,到目前为止,我已经消除了我在搜索中找到的唯一可能的根本原因,我正在寻找替代方案.
任何人都有解决方案,建议,想法,任何可以帮助清除这一点的东西?
我希望能够div通过单击按钮对页面上的一些元素进行排序.
所有这些都有简单的文本内容,例如:
<div class='sortme'>
CCC
</div>
<div class='sortme'>
AAA
</div>
<div class='sortme'>
BBB
</div>
<div class='sortme'>
DDD
</div>
Run Code Online (Sandbox Code Playgroud)
当用户单击按钮时,应按字母顺序重新排列.显然,有很多方法可以做到这一点,最明显的是我们可以将所有内容都放到一个数组中,对数组进行排序并根据它重新创建HTML.
这是这种解决方案的一个例子:
http://jsfiddle.net/hibbard_eu/C2heg/
然而,这对于已经使用的大量代码来说不会很好,而且我希望能够简单地移动div而不做任何破坏性的操作.这可能吗?
我一直在使用PHP一段时间,但对Smarty来说却相当新.
我正在使用Prestashop,我注意到Smarty似乎吃掉了所有PHP错误 - 当PHP代码出错时,.tpl文件只输出一个空白页面.我一直在尝试,但即使出现错误,我也无法让Smarty显示PHP代码输出.
PHP错误报告设置为显示错误.
所以,举个例子,假设这是example.php文件:
<?php
//included classes etc go here, irrelevant for this issue
error_reporting(E_ALL ^ E_NOTICE);
echo obvious wrong syntax"
?>
Run Code Online (Sandbox Code Playgroud)
此文件连接到example.tpl,它适合模板块中的输出.
显然,它应该抛出一个错误.如何让Smarty实际显示该错误?
我知道它看起来像一个平庸的问题,但请阅读整个事情,我很难过.
我的一个页面上有一个AJAX调用,它是一个动态消息传递系统:
function validateMessage(){
var recipient = document.getElementById("send_to").value;
var subject = document.getElementById("popup_subject").value;
var message = document.getElementById("popup_message").value;
var parameters="message="+message+"&recipient="+recipient+"&subject="+subject;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("error_mess").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("POST","include/send_message.php",false);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
xmlhttp.send(parameters);
}
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它被实现为同步,这不是问题所在.我尝试切换到异步,问题仍然存在.
这是send_message.php文件,它只是抓取POST变量并将它们保存到数据库中:
<?php
session_start();
include('db.php');
dbConnect();
$message=$_POST['message'];
$subject=$_POST['subject'];
$recipient=$_POST['recipient'];
$result=mysql_query("select * from korisnici where username='$recipient' ") or die(mysql_error());
$row=mysql_fetch_array($result);
$num=mysql_num_rows($result);
if($recipient=="Poruka za..." || …Run Code Online (Sandbox Code Playgroud) 我已经使用他们的安装指南在我的Linux/Apache服务器上的根目录(这是默认选项)中成功安装了Composer.到目前为止,这一切都非常简单,除了一个php.ini调整我必须做(detect_unicode = Off)但现在我被卡住了.
我正在尝试使用Composer安装Ratchet,并使用本指南:
http://socketo.me/docs/install
它说我需要" 在你的项目文件夹中创建一个名为composer.json的文件 ".所以我在我的应用程序的根目录中使用cPanel文件管理器创建了该文件(包含他们在页面上提供的内容).但是,当我运行Composer时:
php composer.phar install
Run Code Online (Sandbox Code Playgroud)
PuTTy给出以下错误消息:
Composer could not find a composer.json file in /root
To initialize a project, please create a composer.json file as described in the http://getcomposer.org/ "Getting Started" section
Run Code Online (Sandbox Code Playgroud)
但这似乎没有意义,如果文档说将JSON文件放在项目文件夹中,为什么我会将JSON文件放在服务器的根目录中呢?我错过了什么?
php ×4
javascript ×2
ajax ×1
apache ×1
composer-php ×1
css ×1
forms ×1
html ×1
jquery ×1
node.js ×1
prestashop ×1
session ×1
smarty ×1
sockets ×1