小编jov*_*van的帖子

防止PHP脚本在运行时耗尽所有资源?

我有一个每天的cron工作,大约需要5分钟才能运行(它会收集一些数据,然后进行各种数据库更新).它工作正常,但问题是,在这5分钟内,网站完全没有响应任何请求,HTTP或其他.

看起来cron作业脚本在运行时会占用所有资源.我在PHP文档中找不到任何帮助我的东西 - 如何让脚本知道只用掉50%的可用资源?我宁愿让它运行10分钟并在此期间让用户可以使用该站点,而不是让它运行5分钟并且每天都有用户抱怨停机时间.

我确信我可以想出一种方法来配置服务器本身来实现这一点,但我更喜欢在PHP中有一个内置的方法来解决这个问题.在那儿?

或者,作为计划B,我们可以在脚本运行时将所有用户请求重定向到静态停机页面(与现在发生的情况相反,这是页面无限期加载或最终超时).

php

15
推荐指数
3
解决办法
3224
查看次数

HTML默认拒绝检查单选按钮?

这看起来像一个非常基本的问题,我已经创建了几十种形式,但我只是看不出这里的问题.

我有这两个单选按钮:

<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上尝试这个.

html forms

14
推荐指数
1
解决办法
2万
查看次数

Facebook图形API - 获取自定义配置文件图片大小

我正在尝试为画布应用程序获取登录用户的个人资料图片,但我希望以特定的大小.

这是可能的,如果是的话,怎么样?

目前我正在使用以下内容:

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的会员个人资料图片,而无需下载更大的图片和缩小/剪裁?

facebook-graph-api

13
推荐指数
2
解决办法
2万
查看次数

设置相对于浏览器窗口大小的max-height,而不是正文大小

我的网站上有一个模式弹出框,位于<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%,以便整个模态框始终可见.

我将处理溢出,我只需要帮助弄清楚如何以上述方式限制垂直尺寸.

css

13
推荐指数
2
解决办法
3万
查看次数

单行检查套接字是否在给定的房间内?

我正在使用带有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)

sockets node.js

11
推荐指数
3
解决办法
2万
查看次数

即使安装了ZMQ,也找不到类ZMQContext

首先,是的,我知道那里有一个非常相似的问题,但那里的答案并不适用于我的情况,也没有迹象表明它解决了另一个人的问题.

根据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代码确实发挥了作用.所以,到目前为止,我已经消除了我在搜索中找到的唯一可能的根本原因,我正在寻找替代方案.

任何人都有解决方案,建议,想法,任何可以帮助清除这一点的东西?

php apache

9
推荐指数
2
解决办法
1万
查看次数

按字母顺序排序DIV而不破坏和重新创建它们?

我希望能够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而不做任何破坏性的操作.这可能吗?

javascript jquery

9
推荐指数
2
解决办法
8103
查看次数

强制Smarty显示PHP错误

我一直在使用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实际显示该错误?

php smarty prestashop

7
推荐指数
1
解决办法
2万
查看次数

AJAX调用没有明显原因破坏会话

我知道它看起来像一个平庸的问题,但请阅读整个事情,我很难过.

我的一个页面上有一个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)

javascript php ajax session

6
推荐指数
1
解决办法
1183
查看次数

PHP Composer找不到我的项目的composer.json文件

我已经使用他们的安装指南在我的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文件放在服务器的根目录中呢?我错过了什么?

composer-php

6
推荐指数
2
解决办法
3万
查看次数