小编Pet*_*ter的帖子

我可以依赖PHP php.ini精确解决方案来解决浮点问题

我在PHP中找到了浮点问题的一些解决方法:

php.ini设置 precision = 14

342349.23 - 341765.07 = 584.15999999992 // floating point problem
Run Code Online (Sandbox Code Playgroud)

php.ini设置,让我们说吧 precision = 8

342349.23 - 341765.07 = 584.16 // voila!
Run Code Online (Sandbox Code Playgroud)

演示:http://codepad.org/r7o086sS

这有多糟糕?

1.如果我只需要精确的2位数计算(金钱),我可以依赖这个解决方案吗?

如果没有,你可以在这个解决方案失败时给我一个明确的例子吗?

编辑:3.哪个php.ini.precision值最适合两位数,钱计算


  • 请注意我不能使用整数计算(浮点数*100 =美分),这太迟了.
  • 我不打算处理高于10 ^ 6的数字
  • 我不需要比较数字

UPDATE

@Baba答案是好的,但他用precision=20,precision=6在他的测试...所以还是我不知道是不是要去工作与否.

请考虑以下事项:

让我们说precision = 8,我唯一要做的就是加法+和减法-

A + B = C

A - B = C

问题1:对于0到999999.99之间的数字,精确解决方法是否会失败,其中A和B是带小数位的数字?如果是这样,请给我一个例子.

简单的测试可以完成这项工作:

// if it fails what if I use 9,10,11 ???
// …
Run Code Online (Sandbox Code Playgroud)

php floating-point

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

如何动态替换TinyMCE中的内容?

我想{baseurl}在TinyMCE编辑器中将所有关键字替换为正确的URL.我怎样才能做到这一点?

例如,如果用户将在编辑器中添加HTML,<img src="{baseurl}/image.jpg" />我想在TinyMCE编辑器中看到这个图像 - 所以这将被替换为<img src="http://mydomain.com /image.jpg" />

有任何想法吗?

html javascript tinymce

25
推荐指数
1
解决办法
3万
查看次数

如何json_decode无效的JSON与撇号而不是引号

示例代码:

<?php

$json = "['foo', 'bar']";

var_dump( json_decode($json) );
Run Code Online (Sandbox Code Playgroud)

它适用于PHP 5.5.3,但它不适用于较低的PHP版本

它可以在我的机器上使用PHP 5.5.3,但在其他地方都失败了.

我知道这是不正确的JSON,但我的webservice给了我带'符号的JSON"

['foo', "bar", {'test': "crazy \"markup\""}]
Run Code Online (Sandbox Code Playgroud)

砂箱

如何在PHP 5.3中使用撇号解析JSON数据?显然,我想解析的原始JSON更复杂.

(我无法在生产服务器上升级我的PHP,也无法从webservice获取正确的JSON)

php json

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

jQuery fire函数对所有类元素

我想在所有类元素上执行一些函数.我怎样才能做到这一点?

我想要的是:

// i want to fire my function on all class elements
$('.myClass').go(function(){
    // my function using "this" object
});
Run Code Online (Sandbox Code Playgroud)

我知道这是一个愚蠢的问题,我曾经在一段时间内研究预测,现在我不记得jquery的正常功能

javascript jquery

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

MySQL Cursor只获取一行

我的SQL:

CREATE PROCEDURE INV_MIN_PURCHASE_PRICE()
BEGIN
DECLARE done INT;
DECLARE current_inventory_ID INT;
DECLARE cur1 CURSOR FOR SELECT inventory_ID FROM _inventory;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

SET done = 0;
OPEN cur1;

REPEAT

    FETCH cur1 INTO current_inventory_ID;
    UPDATE _debug SET rows=rows+1;

UNTIL done
END REPEAT;

CLOSE cur1;

END;
Run Code Online (Sandbox Code Playgroud)

当我调用此过程时,MySQL只获取一行(_debug rows增加1).为什么??这是一个错误吗?

mysql sql database cursor

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

是否可以在没有curl和wget的情况下将数据发送/获取到TLSv1.1 +安全站点?

我处于这种非常不幸的境地:

  • 我的网站使用的是过时的软件(应用了安全补丁),OpenSSL 0.9.8o 2010年6月1日,不支持TLSv1.1/1.2
  • 我还有支持PCI DSS的支付网关因此SSL和早期TLS在那里被禁用

我的网站用于与支付网关交换数据,但随着TLSv1.0被删除,我不再使用php的cURL库甚至file_get_contents()(或wget/lynx/curl via shell)

是否有任何解决方法,如何在不使用内置库的情况下连接TLSv1.1 +安全服务器的任何选项?

我知道PHP中存在一些类,如phpseclib,这是SSH客户端,非常适合不能使用SSH2模块的人

PHP存在类似的东西吗?有什么方法可以连接到我的网关吗?

到目前为止,我最好的想法是通过其他服务器连接到网关(使用更新的软件)

php linux ssl curl pci-dss

8
推荐指数
1
解决办法
443
查看次数

$ .width()在使用自定义字体时返回不同的结果

情况如下:

$(document).ready(function(){
  // this will return different result
  alert($('#foo').width());
  // than this !!!
  setTimeout(function(){
    alert($('#foo').width());
  }, 1000);
});
Run Code Online (Sandbox Code Playgroud)

CSS(<head>部分):

<link href='http://fonts.googleapis.com/css?family=Headland+One' rel='stylesheet' type='text/css'>
... and
#foo {
    font-family: 'Headland One', serif;
}
Run Code Online (Sandbox Code Playgroud)

当我使用标准字体(例如Arial)时一切都很好(.width()在两种情况下返回相同的结果)

是否有任何解决方法不同于setTimeout获得适当的.width()值并保留自定义字体?

html javascript css jquery fonts

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

file_get_contents似乎是缓存,锁定脚本问题

假设我们需要一些锁定脚本,我们确保两个脚本永远不会同时运行:

if(file_get_contents('test.txt')) { // this is always empty...
   die("Another script is running in background!");
}
file_put_contents('test.txt', 'busy!');
sleep(10); // heavy work here
file_put_contents('test.txt', '');
Run Code Online (Sandbox Code Playgroud)

它仍然允许我同时运行两个脚本.看起来像file_get_contents()缓存的结果?

怎么解决?我想使用文件,而不是DB.


编辑:我已经设法使用flock()设置了锁定脚本(感谢Levi Morrison)

无论如何,我仍然很好奇为什么会file_get_contents出现如此意外的行为?

php locking

5
推荐指数
1
解决办法
936
查看次数

由 Bash 执行与由 cron 执行时,脚本会产生不同的结果

请考虑以下 crontab (root):

SHELL=/bin/bash
...
...
0 */3 * * * /var/maintenance/raid.sh
Run Code Online (Sandbox Code Playgroud)

和 bash 脚本/var/maintenance/raid.sh

#!/bin/bash

echo -n "Checking /dev/md0... "
if ! [ $(mdadm --detail /dev/md0 | grep -c "active sync") -eq 2 ]; then
    mdadm --detail /dev/md0 | mail -s "Raid problem /dev/md0" "my@email.com";
    echo "ERROR"
else 
    echo "ALL OK"
fi;

#-------------------------------------------------------

echo -n "Checking /dev/md1... "
...
Run Code Online (Sandbox Code Playgroud)

这就是当...

...从 shell 提示符 (bash) 执行:

带有mdadm --detail /dev/md0输出的邮件被发送到我的电子邮件(正确的行为)

...由 cron 执行:

空白邮件发送到我的邮箱(主题在那里,但没有消息)


为什么会有这种差异以及如何解决?

linux bash shell cron

5
推荐指数
1
解决办法
2115
查看次数

使用LEFT JOIN中的索引和OR条件

考虑以下查询:

SELECT *
FROM table1
LEFT JOIN table2 ON
   table2.some_primary_key = table1.some_primary_key
LEFT JOIN table3 ON
   table3.some_primary_key = table1.some_primary_key OR -- this is the issue
   table3.column_with_index = table2.column_with_index
Run Code Online (Sandbox Code Playgroud)

虽然我检查EXPLAIN它显示我索引没有用于table3连接(但索引显示在"possible_keys").输入:'ALL'.根据手册:

连接类型"ALL":对前面表格中的每个行组合进行全表扫描.

查询非常慢.

但是,当我删除其中一个条件时,它将是:

LEFT JOIN table3 ON
   table3.some_primary_key = table1.some_primary_key
Run Code Online (Sandbox Code Playgroud)

要么

LEFT JOIN table3 ON
   table3.column_with_index = table2.column_with_index
Run Code Online (Sandbox Code Playgroud)

Mysql正在使用索引.在EXPLAIN结果索引在'键的列中所示,类型是"REF".查询速度非常快.

如何OR在join语句中使用mysql时使用我的索引?

我试过LEFT JOIN table3 FORCE INDEX(PRIMARY, ind_column)但没有成功.

mysql join

5
推荐指数
1
解决办法
1491
查看次数

上传后即时创建大拇指

只是想知道什么是更好的:

即时创建大拇指:

  • [+]易于创建众多拇指大小
  • [+]易于维护
  • [ - ] 通过PHP发送图像来浪费cpu

用户上传后创建拇指:

  • [+]保存服务器cpu
  • [ - ]非常痛苦的维护和痛苦的新增加拇指大小
  • [ - ]也许拇指从未显示过.

有什么建议?我应该真的担心CPU吗?假设我有数千张图像,每张图片都需要5种不同尺寸的拇指.未来可能会有更多尺寸.

php image thumbnails

3
推荐指数
1
解决办法
167
查看次数

动态创建的元素 - 如何使适当的选择器和访问顶级对象

可能重复:
Jquery:选择内的选择

考虑以下代码:

var $el = $('<div class="test"><div>Foor</div></div><div class="test"><div>Bar</div></div><div class="other">Leave it!</div>');

// won't work
$el.find('div.test').css('color','red');

$('body').append($el);
Run Code Online (Sandbox Code Playgroud)

的jsfiddle:

如何<div class="test">使用jQuery 访问元素?

请注意我想.test在文档中使用元素之前访问它们.

我知道我可以为div创建包装器,但我真的想避免它.

javascript jquery

-1
推荐指数
1
解决办法
93
查看次数

标签 统计

php ×5

javascript ×4

jquery ×3

html ×2

linux ×2

mysql ×2

bash ×1

cron ×1

css ×1

curl ×1

cursor ×1

database ×1

floating-point ×1

fonts ×1

image ×1

join ×1

json ×1

locking ×1

pci-dss ×1

shell ×1

sql ×1

ssl ×1

thumbnails ×1

tinymce ×1